Java에서 지원되지 않는 Major Minor 버전 오류

Sheeraz Gul 2024년2월15일
  1. Java에서 지원되지 않는 major.minor 버전 오류
  2. Eclipse 프로젝트의 지원되지 않는 major.minor 버전 오류
Java에서 지원되지 않는 Major Minor 버전 오류

Unsupported major.minor version 오류 또는 Java.lang.UnsupportedClassVersionError는 런타임 중에 JDK가 낮고 컴파일 중 JDK가 높기 때문에 발생합니다. 이 튜토리얼은 Java에서 지원되지 않는 major.minor 버전을 해결하는 방법을 보여줍니다.

Java에서 지원되지 않는 major.minor 버전 오류

JDK는 컴파일 및 런타임 중에 동일해야 합니다. 또는 적어도 컴파일 타임 JDK는 런타임 JDK보다 높지 않아야 합니다. 그렇지 않으면 Java.lang.UnsupportedClassVersionError 또는 Unsupported major.minor version 오류가 발생합니다.

Java 1.8을 사용하여 컴파일하고 1.7을 사용하여 실행하기 때문에 이 오류가 발생하는 예제를 시도해 보겠습니다. 예를 참조하십시오:

public class Unsupported_Version_Error {
  public static void main(String args[]) {
    System.out.println("Hello this is Delftstack.com");
  }
}

위의 코드는 아래와 같이 지원되지 않는 버전 예외를 발생시킵니다.

Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported_Version_Error : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

코드가 Java 1.8에서 컴파일되고 Java 1.7에서 실행되기 때문에 출력에 오류가 표시됩니다. 주요 버전 52는 Java SE 8을 나타내므로 지원되지 않는 major.minor 버전 52.0 오류가 발생합니다.

해결책은 컴파일 및 런타임에 동일한 버전으로 애플리케이션을 빌드하거나 최소한 컴파일 타임 버전이 런타임 버전보다 낮은 것입니다. 클래스와 호환되는 JRE 버전 목록은 다음과 같습니다.

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

지원되지 않는 major.minor 버전 오류를 해결하려면 아래 팁을 따르십시오.

  1. 프로덕션 환경의 JRE 버전을 최신 버전으로 업그레이드할 수 있습니다. 또는 적어도 빌드 환경과 비슷합니다.

  2. JRE 업그레이드가 불가능한 경우 빌드 환경의 JDK를 프로덕션 환경의 버전과 일치하도록 다운그레이드하거나 프로덕션 환경에서 더 낮출 수 있습니다.

  3. 한 가지 간단한 해결책은 Java 크로스 컴파일을 사용하는 것입니다. 프로덕션 환경 JDK가 빌드 환경보다 낮은 경우 크로스 컴파일을 사용하여 더 낮은 버전의 클래스 파일을 생성할 수 있습니다.

    다음 명령은 위의 코드에 대한 클래스 파일을 만드는 데 사용됩니다.

javac -target 1.7 Unsupported_Version_Error.java

위의 명령은 빌드 환경에서 실행할 수 있도록 JDK 1.7 버전과 호환되는 Unsupported_Version_Error.java 클래스 파일을 생성합니다.

Eclipse 프로젝트의 지원되지 않는 major.minor 버전 오류

Eclipse와 같은 IDE를 사용하는 경우 IDE에서 현재 프로젝트의 Java 버전을 변경해야 합니다. 아래 단계에 따라 Eclipse에서 Java 버전을 변경하면 Unsupported major.minor version 오류가 해결됩니다.

  • Eclipse에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동합니다.

    Java 프로젝트 속성

  • Java 빌드 경로로 이동한 다음 라이브러리로 이동합니다.

    Java 빌드 경로

  • 이전 JRE 시스템 라이브러리를 제거합니다. JRE 시스템 라이브러리를 선택하고 제거를 클릭합니다.
  • 다음 단계는 JRE 시스템 라이브러리를 추가하는 것입니다. 라이브러리 추가를 클릭합니다.

    라이브러리 추가

  • JRE 시스템 라이브러리를 선택하고 다음을 클릭합니다.

    JRE 시스템 라이브러리

  • Alternate JRE 옵션을 선택하고 최신 JRE를 선택합니다. 마침을 클릭합니다.

이 프로세스를 따르면 프로덕션 환경 JRE는 빌드 환경과 유사하거나 그 이상이며 지원되지 않는 major.minor 버전 오류가 해결됩니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Error