[자바] java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 51.0
(자바 버전 오류)
Java로 실행하려고 할때
다음과 같은 오류가 발생하시나요?
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Exception in thread "main"
오류의 표현대로 원인은
major.minor version 51.0을 지원하지 않는다.
본인이 사용하는 Java SE 버전에 따라서
오류에 표시되는 major.minor version은 달라질 수 있습니다.
아래와 같은 오류 내용일테지요.
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 45.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 46.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 47.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 48.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 49.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 50.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 51.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 52.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 53.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 54.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 55.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 56.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 57.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 58.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 59.0
java.lang.UnsupportedClassVersionError: AsyncService : Unsupported major.minor version 60.0
그렇다면 major.minor version은 무엇일까요?
아래의 표를 참고하시면 이해하기가 조금 쉬울겁니다.
Java SE | Released | Major | Supported majors |
JDK 1.0.2 | May 1996 | 45 | 45 |
JDK 1.1 | February 1997 | 45 | 45 |
JDK 1.2 | December 1998 | 46 | 45 ~ 46 |
JDK 1.3 | May 2000 | 47 | 45 ~ 47 |
JDK 1.4 | February 2002 | 48 | 45 ~ 48 |
Java SE 5.0 | September 2004 | 49 | 45 ~ 49 |
Java SE 6 | December 2006 | 50 | 45 ~ 50 |
Java SE 7 | July 2011 | 51 | 45 ~ 51 |
Java SE 8 | March 2014 | 52 | 45 ~ 52 |
Java SE 9 | September 2017 | 53 | 45 ~ 53 |
Java SE 10 | March 2018 | 54 | 45 ~ 54 |
Java SE 11 | September 2018 | 55 | 45 ~ 55 |
Java SE 12 | March 2019 | 56 | 45 ~ 56 |
Java SE 13 | September 2019 | 57 | 45 ~ 57 |
Java SE 14 | March 2020 | 58 | 45 ~ 58 |
Java SE 15 | September 2020 | 59 | 45 ~ 59 |
Java SE 16 | March 2021 | 60 | 45 ~ 60 |
Java SE 17 | September 2021 | 61 | 45 ~ 61 |
Java Virtual Machine Specification
Chapter 4. The class File Format
https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.1-200-B.2
Unsupported major.minor version 51.0 문제의 원인은
java 1.7 컴파일러로 컴파일된 클래스를
더 낮은 JRE 실행 버전(ex: JRE 1.6 또는 JRE 1.5)으로 실행하려고 할때 발생합니다.
예를 들면
Java SE7로 컴파일 된 클래스를
Java SE6으로 실행하려고 하면 아래와 같은 오류가 뜰겁니다.
java.lang.UnsupportedClassVersionError: 클래스명 : Unsupported major.minor version 51.0
또 다른 예로
Java SE8로 컴파일 된 클래스를
Java SE7으로 실행하려고 하면 아래와 같은 오류가 뜨겠죠.
java.lang.UnsupportedClassVersionError: 클래스명 : Unsupported major.minor version 52.0
컴파일 한 Java 버전보다
높은 버전의 JRE로 실행할때는 문제가 없지만,
낮은 버전으로 실행할때는 Unsupported major.minor version xx.0 과 같은 오류가 발생하는 것 입니다.
이제 문제의 원인을 알았으니 해결방법을 찾으면 되겠죠?
① Eclipse IDE를 사용하신다면
해당하는 프로젝트를 선택하시고, 마우스 오른쪽 버튼을 눌러서 나타나는 메뉴에서 속성(Properties)를 선택합니다.
② Java Compiler 메뉴에서
JDK Compliance 영역의 JDK 컴파일러 버전을 선택해준 후 'OK' 버튼을 클릭해줍니다.
Eclipse Run Configurations...
① Eclipse의 주 메뉴에서 실행(Run) 메뉴를 클릭하여 나타나는 풀 다운 메뉴에서 실행 환경(Run Configurations...) 메뉴 선택
② JRE 탭을 선택 후 Runtime JRE 버전에서 원하는 JRE 버전을 선택해 준 후 Run 버튼을 클릭합니다.
댓글