[java] java.lang.UnsupportedClassVersionError 수정하는 방법 : 지원되지 않는 major.minor 버전

메모장 + + 를 올인원 도구로 편집, 실행, 컴파일 등 으로 사용하려고합니다 .

나는이 JRE가 설치되고 난에 설치 내 경로 변수가 .../bin디렉토리를.

Notepad ++에서 “Hello world”를 실행하면 다음 메시지가 나타납니다.

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

여기서 문제는 버전에 관한 것입니다. 일부 Java 버전은 오래되었거나 너무 새 것일 수 있습니다.

  1. 어떻게 고치나요?
  2. JDK를 설치하고 JRE 대신 JDK에 대한 경로 변수를 설정해야합니까?
  3. PATHJRE 또는 JDK에서 변수 의 차이점은 무엇입니까 ?


답변

표시된 버전 번호는 클래스 파일과 호환되는 JRE의 버전을 설명합니다.

보고 된 주요 숫자는 다음과 같습니다.

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

(출처 : Wikipedia )

실제 문제를 해결하려면 최신 버전의 Java JRE로 Java 코드를 실행하거나 대상 매개 변수를 Java 컴파일러에 지정하여 컴파일러가 이전 Java 버전과 호환되는 코드를 작성하도록 지시해야합니다.

예를 들어, Java 1.4와 호환되는 클래스 파일을 생성하려면 다음 명령 행을 사용하십시오.

javac -target 1.4 HelloWorld.java

최신 버전의 Java 컴파일러를 사용하면 부트 스트랩 클래스 경로가 설정되지 않았다는 경고가 표시 될 수 있습니다. 이 오류에 대한 자세한 내용은 bootclasspath없이 이전 소스를 설정하기위한 새 javac 경고 블로그 게시물에서 확인할 수 있습니다 .


답변

java.lang.UnsupportedClassVersionError 컴파일 타임 동안 JDK가 높고 런타임 동안 JDK가 낮기 때문에 발생합니다.


답변

Eclipse에서 방금 메뉴 명령 -> 환경 설정 -> Java- > 컴파일러 로 이동 한 다음 “컴파일러 준수 레벨”을 1.6으로 설정했습니다.


답변

걱정하지 마십시오. 해결되었습니다.

실제로는 간단합니다. 동일한 버전으로 JRE / JDK를 모두 설치해야합니다.

JRE 6-> JDK 6

JRE 7-> JDK 7

등등.


답변

이 오류는 설치 한 것보다 최신 버전의 Java로 컴파일 된 Java “클래스”파일을로드하려고 함을 의미합니다.

예를 들어 .class파일이 JDK 7 용으로 컴파일되었을 수 있으며 JDK 6으로 실행하려고합니다.

따라서 해결책은 다음 중 하나입니다.

  • Java 런타임을 업그레이드하거나
  • 소스가있는 경우 로컬 Java 컴파일러 (있는 경우)를 사용하여 클래스를 다시 컴파일하십시오.

    javac FileName.java

개발자의 경우 다른 개발자가 .class 파일을 체크인하고 최신 버전의 Java를 가지고있는 경우 이러한 상황이 발생할 수 있습니다.


답변

코드가 컴파일 된 버전을 지원하지 않는 Java 버전으로 프로그램을 실행하려고합니다. 따라서 기본적으로 코드를 더 높은 버전으로 컴파일하고 더 낮은 버전을 사용하여 코드를 실행해야합니다.

당신이 점점

Unsupported major.minor version 51.0

버전 51.0J2SE 7에 해당합니다 . Java 7에서 코드를 컴파일하고 하위 버전을 사용하여 코드를 실행하려고했을 것입니다. java -version표시되는 내용을 확인하십시오 . Java 7 버전이어야합니다. PATH / JAVA_HOME에서 적절히 변경하지 않은 경우 또는 코드를 실행하려는 것과 동일한 버전으로 컴파일 할 수 있습니다. 구성이 혼동하는 경우 당신은 항상 절대 경로를 제공 할 수 있습니다 /home/user/jdk1.7.0_11/bin/javac/home/user/jdk1.7.0_11/bin/java.


답변

Mac에서도 비슷한 상황이 발생했으며 다음 프로세스가 효과적이었습니다.

터미널에 입력

vi ~/.profile

그런 다음 파일에이 줄을 추가하고 저장하십시오.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

여기서 version은와 같은 컴퓨터의 버전입니다 1.7.0_25.

편집기를 종료 한 후 다음 명령을 입력하여 적용하십시오.

source ~/.profile 

그런 다음 java -version을 입력하여 결과를 확인하십시오.

java -version 

.profile파일 이란 무엇입니까 ?

.profile 파일은 숨겨진 파일입니다. 프로필 파일 인 사용자가 로그인 할 때 실행할 명령을 시스템에 알려주는 선택적 파일입니다. 예를 들어, 내 사용자 이름이 bruno이고 / Users / bruno /에 .profile 파일이 있으면 모든 내용이 로그인 절차 중에 실행됩니다.

출처 : http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile–mac-30515