티스토리 뷰

어플리케이션 실행 시 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

출처 : https://javaalmanac.io/bytecode/versions/

각 JDK Version에 따라 오른쪽과 같은 Bytecode Version이 매핑된다. 내가 사용하는 JDK version은 어떤 Bytecode Version 인지 정도 기억을 해 두자. 

 

내가 어떤 JVM을 사용하는지, 그리고선 오류가 나는 class 파일의 version을 살펴보도록 하자.

어떤 JVM을 사용하는지는 cmd에서 다음과 같은 방법으로 확인할 수 있다. 

> java -version

class 파일의 version을 확인하는 방법은 다음과 같은 방법으로 확인할 수 있다. 

> javap -verbose [class파일의 전체경로]
C:\project\workspace\demo\target\classes\com>javap -verbose DemoApplication.class
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
Classfile /C:/project/workspace/demo/target/classes/com/DemoApplication.class
  Last modified 2021. 3. 18; size 831 bytes
  MD5 checksum 6d7853e1df0d4f89e40ff2ce0b6cb09a
  Compiled from "DemoApplication.java"
public class com.DemoApplication
  minor version: 0
  major version: 55
  flags: ACC_PUBLIC, ACC_SUPER

이렇게 확인을 해보면 9 line의 major version: 55 를 확인할 수 있는데 이것은 class파일이 생성될 때 jdk11을 사용해서 생성이 되었다는 것이다. 따라서 실행시키려는 jvm은 이것보다는 높거나 같은 version이어야 한다

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31