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


1572

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

나는이 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에서 변수 의 차이점은 무엇입니까 ?

jdk도 설치 했습니까? jre는 Java RunTime 환경입니다. Java 앱을 만들려면 jdk도 필요합니다.
CyprUS

예, 내가 했으므로 이제 경로 변수가 jdk가있는 곳을 가리 킵니다. 아직이 "지원되지 않는 부 버전 51.0"오류가 계속 발생합니다. 이전 버전의 jdk를 설치해야한다고 생각하십니까? jdk 1.7.0을 사용하는 메신저
ERJAN

20
요즘 OSX에서 이상한 Apple java 6 및 Oracle java 7 상황으로 인해 문제가 발생했을 때 Mac OS X에서 이런 일이 발생했습니다. 짧은 버전 : JDK7로 컴파일하고 JDK6으로 실행하십시오.
Warren P

7
자바에서 ClassName은 대문자로 시작해야합니다;)
Ashish Panery

5
El Captain의 경우이 답변으로 해결되었습니다 : stackoverflow.com/a/34201991/1615594
tsuz

답변:


1939

표시된 버전 번호는 클래스 파일과 호환되는 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 경고 블로그 게시물에서 확인할 수 있습니다 .


167
"표시된 버전 번호는 Java가 코드를 컴파일하는 데 사용 된 경우의 버전을 나타냅니다." 아니 그렇지 않아. 클래스 파일과 호환되는 JRE 버전을 표시합니다. 사용하여 크로스 컴파일 옵션 당신은 (1.7까지) 1.1의 클래스 버전으로 컴파일 코드에 1.7 JDK를 사용할 수 있습니다.
Andrew Thompson

85
이 답변은 질문에 따라 문제를 해결하는 방법을 설명하지 않습니까?
Jonathan Leung

7
이것은 Eclipse에서 직접 이전 버전으로 컴파일하기에 좋은 솔루션입니다. stackoverflow.com/a/16345710/2091700
Alphaaa

19
일식에서 project => Properties => java 컴파일러; jre 또는 jdk에 따라 "컴파일러 준수 레벨"을 버전으로 설정하십시오. 저의 경우 jre 1.6의 경우 1.6입니다.
Sam

5
컴파일러 소스가 현재 컴파일중인 JRE / JDK를 준수하지 않는 경우에 발생할 수 있습니다. 예를 들어 eclipse .settings 폴더, org.eclipse.jdt.core.compiler.compliance = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler에서 아래 값을 찾았습니다. .codegen.targetPlatform = 1.7. 그리고 내 컴파일러는 1.6.0_32였습니다. 값을 1.6으로 변경 한 후 문제가 해결되었습니다. 이 문제는 JDK 1.7을 사용하는 다른 작업 공간에서 프로젝트를 복사 한 후에 시작되었습니다. (
Gana

366

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


11
+1 :이 심볼릭 링크 ( /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java)를 javac로 컴파일하기 위해 사용 된 버전으로 변경하면 해결되었습니다
ezdazuzena

1
위의 변경은 어떻게합니까?
Ankur Raiyani

8
프로젝트-> 특성-> Java 컴파일러 프로젝트 특정 설정을 사용하십시오. 그런 다음 컴파일러 준수 수준을 1.7, 1.6 또는 1.5로 선택하고 앱을 빌드하고 테스트하십시오.
Vivek Kumar Ray

Java 7로 옮길 때 Eclipse는 어떻게 든 Java 6에서 계속 실행하려고 시도했습니다. 이전 JDK를 제거하면 나를 위해 트릭을 수행했습니다.
HDave

9
@ezdazuzena 그렇게 사용 sudo update-alternatives --config java합니다.
Thorbjørn Ravn Andersen 님이

115

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


3
일식에서 때때로 프로젝트 패싯도 적절한 Java 버전으로 변경해야합니다.
Bilal Mirza

6
감사. Eclipse의 기본 실행 환경 (빌드 경로로 이동하는 JRE)을 설정 하는 것은 별도의 설정 이라는 점에 주목할 가치가 있습니다. JRE를 설정했지만 컴파일러 준수 수준은 설정하지 않았습니다. 이것은 그것을 고쳤다.
wchargin

그리고 이것이 옵션을 설정하기에 적합한 장소라는 오류 메시지에서 어떻게 결론을 도출 했습니까?
Alexander

아마이 : stackoverflow.com/questions/7073485/...은 당신이 개미와 이클립스를 사용하는 경우 도움이 될 수 있습니다.
OuuGiii

문제는 메모장 ++에 관한 것이지만 Eclipse는 아닙니다.
gotwo

60

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

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

JRE 6-> JDK 6

JRE 7-> JDK 7

등등.


29
java 7은 아무런 문제없이 6을 처리 할 수 ​​있습니다.
damienix

@damienix Java 7 JRE가 아무런 문제없이 Java 6 컴파일 된 클래스를 처리 할 수 ​​있도록 지정하려고합니다. 그렇지 않으면 명령문이 혼동 될 수 있습니다.
Frontear

43

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

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

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

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

    javac FileName.java

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


22

코드가 컴파일 된 버전을 지원하지 않는 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.


18

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


16

Eclipse의 메뉴 -> 환경 설정 -> Java- > 컴파일러에서 "프로젝트 특정 설정 구성"도 확인하십시오.

동일한 Java 버전으로 오류가 계속 발생하면 프로젝트의 빌드 폴더를 수동으로 삭제하십시오. 그런 다음 Eclipse를 다시 시작하십시오.


14

Java 7에서 일부 JAR 라이브러리를 컴파일 할 수 있으며 Java 런타임으로 Java 6 만 있습니다. 일부 새로운 라이브러리에서 발생할 수 있습니다.


14

가장 일반적인 문제는 JAVA_HOME변수를 잘못 구성하여 여러 Java를 설치 한 경우 올바른 Java Development Kit 라이브러리를 가리켜 야합니다.

SDK Java 폴더가있는 위치를 찾으려면 다음 명령을 실행하십시오.

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

데비안 / 우분투

설치 한 Java (openjdk)를 확인하려면 다음을 통해 확인하십시오.

dpkg -l "openjdk*" | grep ^i

또는:

update-java-alternatives -l

변경하려면 다음을 사용하십시오.

update-alternatives --config java

sudo필요한 경우 접두사를 붙입니다 .

대체 Java 버전을 선택하십시오.

또는 설치 가능한 항목을 확인하십시오.

apt-cache search ^openjdk

sudo필요한 경우 접두사를 붙입니다 .

그런 다음 예를 들어 설치할 수 있습니다.

apt-get install openjdk-7-jre

sudo필요한 경우 접두사를 붙입니다 .

페도라, 오라클 리눅스, 레드햇

다음을 통해 적절한 패키지를 설치 / 업그레이드하십시오.

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdk패키지는 자바 런타임 환경이 포함되어 있습니다. Java 프로그램을 개발하려면 java-1.7.0-openjdk-devel패키지 를 설치하십시오 .

BSD

FreeBSD Ports 컬렉션에는 openjdk7 이라는 OpenJDK 7 패키지가 있으며 아마도 재구성해야 할 것입니다.

참조 : 오픈 JDK 위키 페이지를 .

윈도우

Oracle 사이트 에서 적절한 Java SE Development Kit 라이브러리를 설치하거나 설치하십시오.

젠킨스

Jenkins에서이 문제가 발생하면 다음을 참조하십시오.

그러나 올바른 버전의 Java (최신)를 선택 update-alternatives하면 작동합니다.


이 답변은 cloudera가있는 클러스터에 스파크 서비스를 추가 한 후 호스트에서 spark2-shell을 사용하려고 할 때 효과적이었습니다.
변경

12

Ant 스크립트를 사용하여 애플리케이션을 빌드 할 때도 동일한 문제점에 직면했습니다 .

내 응용 프로그램 개발에 Eclipse 를 사용 하고 프로젝트의 빌드 속성에서 컴파일러 버전을 변경했습니다. 그러나 그것은 나를 위해 작동하지 않았습니다. 그런 다음 Ant 스크립트에서 컴파일러 버전을 제공 할 수 있음을 알았습니다.

Java 파일을 컴파일하는 섹션에서 Ant 스크립트를 수정했습니다.

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

이것은 지원되지 않는 주요 사소한 문제를 해결하는 데 도움이되었습니다.



12

1.7로 작성된 프로젝트에서 같은 문제가 발생하여 1.6에서 실행하려고했습니다.

Eclipse의 내 솔루션 :

  • 프로젝트 속성-> Java 빌드 경로-> 라이브러리를 마우스 오른쪽 버튼으로 클릭하십시오.

  • JRE 시스템 라이브러리를 선택 하고 오른쪽에서 편집 을 클릭 하고 대상 JRE를 선택하십시오.

  • 이제 왼쪽의 Java Compiler 로 이동 하여 Compiler 컴플라이언스 레벨 을 대상으로 변경하십시오 .

그것은 나를 위해 일했다.


11

여러 사람들이 다른 곳에서 대답 한 것처럼 Java 프로그램은 컴파일 된 것보다 이전 버전의 Java에서 실행되고 있습니다. 이전 버전과의 호환성을 위해 "크로스 컴파일"되어야합니다. 달리 말하면 소스와 대상 Java 버전간에 불일치가 있습니다.

Eclipse 메뉴에서 옵션을 변경해도 Eclipse를 사용하지 않는다고 원래 포스터에 응답하지 않습니다. 오픈 JDK의 javac의 버전 1.7에이 매개 변수를 사용하는 경우, 당신은 1.6에 대한 crosscompile 수 -source-target플러스 제공 rt.jar을 대상 버전의 - 파일을 (즉, 하나 이상) 컴파일시. 실제로 1.6 JRE를 설치하는 경우 설치를 가리킬 수 있습니다 (예 : Ubuntu의 /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar, / usr / jdk / jdk1). SunOS의 6.0_60 / jre / lib / rt.jar. 분명히 Windows 시스템의 위치를 ​​모르겠습니다.) 이렇게 :

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

인터넷에서 rt.jar을 다운로드하여 가리킬 수있는 것 같습니다. 이것은 너무 우아하지 않습니다.

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java

10

이것을 바탕으로 ...

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

Eclipse에서 패키지 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.

빌드 경로 -> 빌드 경로 구성

아래에:

Java 빌드 경로 -> 라이브러리 -> 라이브러리 추가 -> JRE 시스템 라이브러리 -> 설치된 JRE- > 검색 .

검색이 완료된 후 사용 가능한 목록에서 라이브러리를 선택하여 필요한 JRE를 추가하십시오.


10
  • Maven을 사용하는 경우 Java 컴파일 레벨을 설정하십시오. 명령 행을 열고 java -version컴파일 레벨을 작성 하십시오.

    여기에 이미지 설명을 입력하십시오

  • IntelliJ IDEA를 사용하는 경우 project → FileSettingsBuild Execution DeploymentCompilerJava Compiler를 선택하십시오 . 그런 다음이 이미지와 같이 바이트 코드를 1.7로 변경하십시오.

    여기에 이미지 설명을 입력하십시오


pom을 변경 한 후에도 maven clean install을 수행해야했습니다.
Joe Borysko

10

Maven 을 사용하는 동안이 문제가 발생 하면 플러그인 Maven Compiler를 사용하여 코드를 컴파일 할 수 있습니다 .

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
       .....

업데이트 : JDK 8을 사용하는 경우 sourceand target로 설정하십시오 1.8.


교차 컴파일을 위해 플러그인을 사용하는 방법에 대한 스 니펫은 링크를 방문하거나 여는 대신에 매우 좋습니다
coding_idiot

8

Eclipse에서 Ant를 실행할 때 동일한 오류 메시지가 표시되었지만 여기에 언급 된 다른 솔루션으로는 문제가 해결되지 않았습니다. 재미있는 점은 Windows 명령 줄에서 Ant를 실행하는 것이 제대로 실행 되었기 때문에 Eclipse 내에서 구성 문제가되어야한다는 것입니다.

Eclipse에서 Ant가 실행되는 환경을 지정할 수 있으며 JDK 대신 JRE로 설정되었습니다.

  • 실행-> 외부 도구-> 외부 도구 구성 ...으로 이동하십시오.
  • 프로젝트의 Ant build.xml을 선택하십시오 (여러 프로젝트가있는 경우).
  • 탭 'JRE'활성화
  • 여기에서 '별도의 JRE : jre6'이 선택되었습니다. 1.6 또는 1.7 시리즈에서 이것을 JDK로 변경하면 오류가 사라졌습니다.

8

어떻게 고치나요?

이 오류는 클래스 코드를 실행하는 데 사용되는 JRE가 사용 된 Java 버전을 인식하지 못함을 의미합니다. 일반적으로 클래스 파일을 생성 한 (즉, 컴파일 된) Java 버전이 더 최신 버전이기 때문입니다.

문제를 해결하려면 다음 중 하나를 수행하십시오.

a) Java 소스를 실행하는 데 사용되는 것과 동일한 또는 이전 버전의 Java 컴파일러로 Java 소스를 컴파일하십시오. 즉, 적절한 JDK를 설치하십시오.

b) 최신 버전의 Java 컴파일러를 사용하지만 호환 모드로 Java 소스를 컴파일하십시오. 즉, -target매개 변수를 사용하십시오 .

c) 컴파일 된 클래스를 클래스 컴파일에 사용 된 JDK와 같거나 최신 버전 인 JRE에서 실행하십시오.

javac -version컴파일러 및 java -version런타임에 현재 사용중인 버전을 확인할 수 있습니다 .

JDK를 설치하고 PATH 변수를 JRE 대신 JDK로 설정해야합니까?

컴파일을 위해서는 원하는 특정 JDK를 설치하고 구성하십시오.

런타임의 경우 JDK 또는 독립형 JRE와 함께 제공되는 것을 사용할 수 있지만 관계없이 올바른 버전을 설치했으며 놀라움이 없도록 PATH를 구성했는지 확인하십시오.

JRE 또는 JDK에서 PATH 변수의 차이점은 무엇입니까?

PATH 환경 변수는 명령 쉘에 입력 한 명령을 찾을 위치를 알려줍니다. 를 입력 java하면 명령 쉘 인터프리터는 PATH변수에 지정된 모든 위치 를 왼쪽에서 오른쪽으로 살펴보고 java실행할 적절한 런타임 실행 파일을 찾습니다 . 여러 버전의 Java가 설치되어있는 경우java PATH 변수에 지정된 여러 위치에 실행 파일이있는 경우) 왼쪽에서 오른쪽으로 갈 때 처음으로 나타나는 것이 실행되는 것입니다.

컴파일러 명령은 javacJDK와 함께 제공됩니다. 런타임 명령은 javaJDK와 함께 제공되며 JRE에 있습니다.

하나의 버전 (51.0 = Java 7)이 javac설치되어 있고 동일한 버전도 java설치되어 있지만 javaPATH 의 다른 이전 버전이 PATH에 일찍 표시되어 예상 한 버전 대신에 호출되고있는 것 같습니다 .


7

더 높은 버전의 JDK를 사용하여 더 낮은 버전의 JDK / JRE 에서 컴파일하고 실행하려고했습니다 .

이를 확인하려면 버전 정보를 참조하십시오.

javac -version

java -version

그것들은 다를 것이고 javac는 더 높은 버전 번호를 가질 것입니다.

이 문제를 해결하려면 JDK 버전에서 java를 사용하거나 최신 JRE / JDK가있는 경우 실행하십시오.

which javac위치를 알려줍니다 (예 :) /usr/bin/javac. 그냥 사용하여 직접 실행/usr/bin/java <program> .

또는 환경 변수를 영구적 인 솔루션으로 설정할 수 있습니다.


6

Java 6으로 되돌리고 이전에 Java 7로 컴파일 된 클래스를 실행하려고 할 때이 문제가 발생했습니다. 환경 설정> java> 컴파일러-> 준수 레벨을 1.6으로 설정하고 결정적으로 "프로젝트 설정 구성"이었습니다.


6

오늘이 오류 메시지는 Tomcat 7의 Ubuntu 12.04.2 LTS (Precise Pangolin) 에 나타났습니다 .

/var/log/tomcat7/localhost.2014-04-08.log :
2014 년 4 월 8 일 오전 9:00:55 org.apache.catalina.core.StandardContext filterStart
심각 : 예외 필터 시작 struts2
java.lang.UnsupportedClassVersionError : controller / ReqAccept : 지원되지 않는 major.minor 버전 51.0 (클래스 컨트롤러를로드 할 수 없음 ReqAccept)

스트럿츠 애플리케이션은 자바 7 컴파일됩니다.

누군가 "service tomcat [stop / start]"를 사용하여 Tomcat 7을 다시 시작했습니다.

$ ps -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03 / usr / lib / jvm / default-java / bin / java ...
$ / usr / lib / jvm / default-java / bin / java-버전
Java 버전 "1.6.0_27"

"지원되지 않는 major.minor 버전 51.0"오류가 발생합니다.

"/etc/init.d/tomcat7 [stop / start]"를 사용하여 Tomcat 7을 다시 시작하면 문제가 해결되었습니다.

$ ps -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java -version
Java 버전 "1.7.0_15"


6

나는 그것을 해결했다. 나는 달렸다 :

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

오류가 잘못되었습니다 Unsupported major.minor version 51.0. 이것은 버전 51 (Java 7)이 지원되지 않는다는 인상을줍니다. 그리고 Java 6을 사용해야합니다.

오류는 다음과 같아야합니다.

현재 Java 버전 50은 지원되지 않습니다. 대신 Java 버전 7 (51 : 0 이상)을 사용하십시오 .`


6

Java 파일이 실행하려는 버전 (런타임 버전)과 다른 버전 (컴파일러 버전)으로 컴파일되었습니다.

하위 버전으로 컴파일 된 클래스는 이후 버전에서 실행될 것으로 예상됩니다. 그러나 반대의 경우 (더 높은 컴파일러 버전으로 컴파일되고 더 낮은 런타임 버전으로 실행하려고 시도하는 경우) 때로는 불가능합니다.

따라서 프로그램을 실행하려고 할 때이 오류가 표시됩니다. 지원되지 않는 major.minor 버전 xx

큐: Java 7에서 응용 프로그램을 만들었지 만 사용자가 응용 프로그램을 실행하려고하면 지원되지 않는 major.minor 버전 51.0 오류가 발생합니다. 이것이 무엇을 의미하며 어떻게해야합니까?

A : Java 7에서 javac를 사용하여 응용 프로그램을 컴파일하면 결과 클래스 파일의 버전 번호는 51.0입니다. 7 이전의 Java 버전은이 숫자를 인식하지 못하므로 사용자는 애플리케이션을 실행하기 전에 Java 7로 업그레이드해야합니다. Java 7 API를 사용하지 않는 경우 javac -target 1.6을 사용하여 애플리케이션을 컴파일하여 1.6 호환 클래스 파일을 작성할 수 있습니다. 응용 프로그램이 webstart를 사용하여 배치 된 경우 필요한 최소 버전을 지정할 수 있습니다. 자세한 내용은 Java Web Start 및 JNLP 관련 문서를 참조하십시오. 현재 데스크톱에 Java 6이있는 최종 사용자를 위해 Java 7로 자동 업데이트를 시작하면이 문제가 사라집니다. 이에 대한 타임 라인은 아직 결정되지 않았으므로 개발자는 코드와 JDK 7 사이의 문제를 먼저 해결할 시간을주기를 원합니다.

(출처 : oracle.com )


5

Mac OS XI는 JAVA_HOME 변수를 설정하여이 문제를 해결할 수있었습니다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home

4

먼저 몇 가지 기본 사항을 알아 보겠습니다.

JRE는 라이브러리, JVM, Java 플러그인 및 Java 웹 시작을 제공하는 NetBeans / Eclipse / standalone 의 구성 요소입니다 . 컴파일러 또는 디버거는 제공하지 않습니다.

JDK는 컴파일러 및 디버거와 함께 JRE의 상위 집합입니다.

따라서 JDK 대신 JRE로 기본 라이브러리를 사용하면 물건을 가져 오는 데 좋은 시간이 있지만 컴파일되지는 않습니다.

대신 경로를 JDK로 설정하십시오 (NetBeans를 사용하고 netbeans / etc / netbeans.conf에서 netbeans.conf를 사용하여 경로를 설정하고 경로를 변경합니다).


3

단위 테스트를 실행하기 위해 명령 행에서 프로젝트에서 Maven 컴파일을 실행해야하는 문제가있었습니다. 테스트 클래스를 변경하고 Eclipse가 자동으로 다시 컴파일하게하면 "Unsupported major.minor version 51.0"오류가 발생합니다.

JDK6과 JDK7이 모두 설치되어 있지만 모든 JRE 설정이 pom 및 Eclipse의 프로젝트 속성 페이지에서 1.6을 가리 켰습니다. Maven 업데이트 프로젝트 및 / 또는 새로 고침이이 문제를 해결하지 못했습니다.

마지막으로 프로젝트를 닫고 다시 열어 보았습니다.이 문제가 해결되었습니다! HTH


3

JDK 7로 Java 클래스를 컴파일했으며 JDK 6에서 동일한 클래스를 실행하려고합니다.


3
  • JDK 7.0.55를 설치하고 Eclipse for Java를 설정하십시오. for .
  • 빌드 경로 JDK 7.0.55에서 구성하여 JDK 7.0.55로 프로젝트를 빌드하십시오.
  • 메뉴에서 JDK 7.0.55 이클립스의 컴파일러 설정 윈도우 -> 환경 설정 -> 자바 -> 컴파일러 - 1.7을 선택합니다.

3

대답은 문제에 대한 것입니다.

"main"스레드 예외 java.lang.UnsupportedClassVersionError : edu / stevens / cs549 / dhts / main / LocalContext : 지원되지 않는 major.minor 버전 52.0

나는 같은 문제를 겪고 있었다. AWS ec2 인스턴스에서이 문제가 발생하여 어떻게 든이 질문으로 리디렉션 된 사람들을 위해. 나는 그에 대해 대답하고 있으며 내가 한 일을 나누고 싶습니다. Amazon EC2 인스턴스가 Java 버전 1.7을 실행 중이고 문제가 발생했을 수 있습니다. Maven을 사용하고 있었고 Java 1.8에 대해 사전 구성되어 있기 때문에 프로젝트와 호환되지 않았을 수 있습니다. 그래서 새로운 버전의 Java를 설치했습니다.

sudo yum -y install java-1.8.0

그리고 중요한 단계는 이전 버전을 제거하는 것입니다.

sudo yum remove java-1.7.0-openjdk

새 버전을 설치 한 후 삭제해야합니다. 그렇지 않으면 계속 동일한 이전 버전을 사용하게되므로 문제가 해결되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.