[java] java.lang.UnsupportedClassVersionError : .class 파일의 버전 번호가 잘못 되었습니까?

소스에서 컴파일 해야하는 오픈 소스 라이브러리를 포함하면이 오류가 발생합니다. 이제 웹의 모든 제안은 코드가 한 버전으로 컴파일되어 다른 버전에서 실행되었다는 것을 나타냅니다 (이전 버전의 새로운 기능). 그러나 내 시스템에는 하나의 JRE 버전 만 있습니다. 내가 명령을 실행하면 :

$ javac -version
javac 1.5.0_18

$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

Java 라이브러리의 속성을 Eclipse에서 확인하면 얻을 수 있습니다. 1.5.0_18

따라서 클래스 자체 내부에서 다른 예외를 던지고 있다고 결론 지어야합니까 ?? 가능합니까?



답변

나는 이와 같은 오류 메시지가 보통 옳다는 것을 배웠다. 그것이 아마도 (당신의 마음에) 오류 가보고 된 것과 같지 않을 때, 당신은 다른 지역에서 문제를 찾고 있습니다 … 몇 시간 후에 원래의 오류 메시지가 실제로 옳았다는 것을 알 수 있습니다.

Eclipse를 사용하고 있기 때문에 Thilo가 올바른 것으로 생각합니다.이 메시지가 표시 될 가능성이 가장 높은 이유는 프로젝트 중 하나가 1.6 클래스를 컴파일하기 때문입니다. Eclipse에는 javac가 아닌 자체 컴파일러가 있고 1.6 클래스를 컴파일하려면 1.5 JRE 만 있으면되므로 시스템에 1.5 JRE 만 있는지는 중요하지 않습니다. 이상 할 수 있으며이를 허용하려면 설정을 선택 취소해야하지만 방금 관리했습니다.

해당 프로젝트의 경우 프로젝트 속성 (일반적으로 Alt + Enter), Java 컴파일러 섹션을 확인하십시오. 다음은 1.6을 컴파일하도록 구성되었지만 1.5 JRE 만있는 프로젝트의 이미지입니다.

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


답변

완전한 “깨끗한”작업을 시도한 다음 Eclipse (Project-> Clean …)에서 다시 빌드 했습니까?

명령 행에서 “javac”및 “java”로 바로 컴파일하고 실행할 수 있습니까? 제대로 작동합니까?

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 “속성”으로 이동 한 다음 “자바 빌드 경로”로 이동하면 탭 아래에 의심스러운 항목이 있습니까? 이것은 본질적으로 CLASSPATH입니다.

Eclipse 환경 설정에서 “Java”섹션의 “Installed JREs”섹션을 다시 확인하여 원하는 것과 일치하는지 확인할 수 있습니다.

어딘가에 낡은 .class 파일이 있거나 사용중인 Java 버전에서 컴파일 타임 / 런타임 불일치가 발생합니다.


답변

Eclipse로 컴파일 했습니까? 다른 컴파일러 (javac 아님)를 사용합니다. 이 오류가 발생하지 않아야하지만 (모든 것이 올바르게 구성된 경우) 대신 javac로 컴파일하려고 시도 할 수 있습니다.

문제가 해결되면 Eclipse에 잘못된 컴파일러 설정이 있는지 확인하십시오. 특히 Java 5를 대상으로합니다.


답변

나도 같은 오류가 발생했습니다. 그 이유는 Maven을 사용하여 프로젝트를 컴파일하고있었습니다. JDK7을 가리키는 JAVA_HOME이 있었으므로 컴파일에 Java 1.7이 사용되었으며 프로젝트를 실행할 때 JDK1.5를 사용했습니다. .classpath 파일에서 아래 항목을 변경하거나 스크린 샷에서와 같이 일식을 변경하면 문제가 해결되었습니다.

classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

또는 식의 실행 구성을 다음과 같이 변경하십시오.
여기에 이미지 설명을 입력하십시오


답변

또한 프로젝트에서 더 높은 버전의 Java 용으로 컴파일 된 jar 파일을 확인하십시오. 이들이 자신의 라이브러리 인 경우 대상 버전 속성을 javac로 변경하여이 문제를 해결할 수 있습니다.

<javac destdir="${classes.dir}"
            debug="on" classpathref="project.classpath" target="1.6">


답변

이 일이 발생할 수있는 또 다른 시나리오는 호스트 이클립스에서 이클립스 인스턴스 (디버그 등의 경우)를 시작할 때입니다.이 경우 프로젝트의 클래스 경로에서 프로젝트 레벨 또는 JRE 라이브러리를 변경해도 도움이되지 않습니다. 중요한 것은 대상 Eclipse 환경을 시작하는 데 사용되는 JRE입니다.


답변

항상 명백한 것도 점검하십시오. 실수로 서버의 추가 및 제거 작업에 대한 잘못된 리소스를 가져 왔을 때이 오류가 발생했습니다. 간과하기 쉽습니다.