트러블 슈팅
[Java]UnsupportedClassVersionError 해결하기(JDK 8로 다시 컴파일하는 방법)
kchs0529
2025. 3. 18. 15:10
1. 현상
이전에 자바를 공부하기 위해 만들었던 프로젝트의 java 파일을 실행했더니 UnsupportedClassVersionError가 나오며 실행되지 않음
기존에는 JDK 17에서 개발했으나, 현재 JDK 8을 사용하는 프로젝트에서 실행했더니 오류 발생
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/drimsys/classpractice/RandomExample
has been compiled by a more recent version of the Java Runtime (class file version 61.0),
this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
2. 원인
UnsupportedClassVersionError : 컴파일된 클래스 파일의 버전이 실행 중인 Java Runtime Environment (JRE) 버전과 호환되지 않을 때 발생한다.
- class file version 61.0 → Java 17에서 컴파일된 코드
- this version of the Java Runtime only recognizes class file versions up to 52.0 → 현재 실행 중인 JRE는 Java 8까지만 지원
📌즉, JDK 17에서 개발한 코드를 JDK 8 환경에서 실행하려 해서 생긴 문제
💡 현재 사용 중인 JDK/JRE 버전이 맞는지 확인하려면?
java -version # 실행 중인 JRE 버전 확인
javac -version # 사용 중인 JDK 버전 확인
3. 해결방법
Java 버전 일치시키기 위해 jdk 8 버젼으로 다시 컴파일을 진행하면 된다.
1. 프로젝트 우클릭 → Properties → Java Build Path → 버전이 맞는지 확인
2. 프로젝트 우클릭 → Properties → Java Compiler → Compiler compliance level을 1.8로 설정 → Apply and close
3. 컴파일러 세팅이 변경됐다고 뜨면 yes를 눌러 프로젝트를 컴파일