추가 공부/Java

[Java] UnsupportedClassVersionError

개발자가 되고 싶은 곰 2024. 11. 13. 21:22

UnsupportedClassVersionError 는

실행 환경 JVM 버전보다 더 높은 버전의 Java Class 파일을 컴파일하려해서 발생한다.

 

각 Java Class File Version을 확인해보자.

JDK Version Bytecode Version
Java 1.0 45.0
Java 1.1 45.3
Java 1.2 46.0
Java 1.3 47.0
Java 1.4 48.0
Java 5 49.0
Java 6 50.0
Java 7 51.0
Java 8 52.0
Java 9 53.0
Java 10 54.0
Java 11 55.0
Java 12 56.0
Java 13 57.0
Java 14 58.0
Java 15 59.0
Java 16 60.0
Java 17 61.0
Java 18 62.0
Java 19 63.0
Java 20 64.0
Java 21 65.0
Java 22 66.0
Java 23 67.0
Java 24 68.0

 

각 JDK Version에 따라 Bytecode Version이 매핑된다.

 

배포 진행중 발생 오류였는데

로컬에서 테스트할때 사용했던 JDK Version 은 Java 22을 사용하고 있었다.

하지만 배포 환경에서는 Java 17버전을 사용하고 있었기 때문에 발생했다.

 

이 문제 해결은 컴파일할때 JDK Version 을 맞춰서 사용해 주어야한다.

 

JVM Version 확인방법

java -version
java version "22" 2024-03-19
Java(TM) SE Runtime Environment (build 22+36-2370)
Java HotSpot(TM) 64-Bit Server VM (build 22+36-2370, mixed mode, sharing)

 

 

Class 파일의 version을 확인하는 방법

따로 javap.exe 환경 변수 설정이 안되어있고

"'javap'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다."

오류가 발생하면 java 폴더 -> bin 내부에 class 파일을 추가하고 아래 명령어를 실행해주면 됩니다.

javap -verbose AdminAspect.class | find "version"
  minor version: 0
  major version: 65

 

이렇게 버전 확인을 가능하다.

728x90