[Java] java.lang.UnsupportedClassVersionError
by 배부른코딩로그💡 java.lang.UnsupportedClassVersionError 발생시, JRE 버전을 확인해보자!
목표
- java.lang.UnsupportedClassVersionError 오류를 적절히 대응할 수 있다.
- Unsupported major.minor version에 대해 정리하는 공간으로활용할 수 있다.
자바 클래스 혹은 라이브러리를 실행시키면 간혹 아래와 같은 오류가 발생한다.
java.lang.UnsupportedClassVersionError: TestWorkspace :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
이 오류 발생시, 코드에서 답을 찾을 수 없을 것이다. 자바의 컴파일 버전이 맞지 않기 때문에 발생하기 때문이다.
하위 버전의 클래스 파일을 상위 버전이 읽어들일 때는 상관없지만,
상위 버전의 클래스 파일을 하위 버전이 읽어올 때는 에러가 발생한다.
즉, 상위 버전에서 컴파일 된 class 파일을 보다 낮은 버전의 JRE 운영환경에서 실행했기 때문이다.
해결방법
컴파일한 PC의 JDK가 기준인지, 실행시킨 환경의 JRE가 기준인지 명확히 해야한다.
- 컴파일한 PC가 기준이라면, 서버의 자바 버전을 올려줄 필요가 있다.
다른 프로세스가 실행중인 서버라면, 올라간 JRE에 대한 호환성 체크도 필요하다. - 실행환경이 기준이라면, 컴파일할 때, 컴파일 시 JDK를 강제로 낮춰서 컴파일하면 된다.
사용중인 IDE에서 컴파일 설정 메뉴에서 변경할 수 있을 것이다.
에러 상세코드
컴파일 버전에 따른 버전(version) 정보는 다음과 같다.
Java SE 17 = 61,
Java SE 16 = 60,
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
읽은 방법은 '컴파일 버전 Java SE 17 은 version 61.0 과 동일하다.' 이다 : )
출처
- How to fix java.lang.UnsupportedClassVersionError, Juha Palomäki , 2012-07-11
Last Updated. 2022. 03. 31.
반응형
블로그의 정보
배부른코딩로그
배부른코딩로그