Java 이상.UnsupportedClassVersionError

3468 단어 version
기록 하 다
    특히 업그레이드 버 전 은 가방 과 jdk 등 을 포함해 버 전 정 보 를 주목 해 야 한다.
    jdk 8(1.8)이후 몇 년 간 이 세상 에는 수많은 프로그래머 들 이 버 전 일치 성에 시간 을 낭비 할 것 으로 예상 된다.
    이 문제 만 가지 고 자바 계 의 가방 은 모두 표 시 를 해 야 하 며,이러한 문 제 를 스 캔 하 는 프로그램 이 필요 합 니 다.runtime 이 아 닌 육안 으로 수많은 줄 의 stack 정 보 를 스 캔 하고,그 중에서 가장 어 리 석 은 실수 결 과 를 추측 해 야 합 니 다.
    btw,과정 관리 가 점점 중요 해 지 는 거 아니 야?
 
========================================================================
1.오류 원인
java.lang.Unsupported ClassVersionError 발생 원인 은 높 은 버 전의 JDK 로 컴 파일 된Java class 파일 이 낮은 버 전의 JVM 에서 실 행 된 오 류 를 시도 합 니 다.높 은 버 전 JDK 에서 생 성 된 class 파일 에 사용 되 는 형식 은 낮은 버 전 JDK 에서 생 성 된.class 파일 형식 과 다 를 수 있 으 므 로 낮은 버 전 JVM 에서 이.class 파일 을 실행 하 는 것 을 설명 할 수 없 으 면 java.lang.Unsupported ClassVersion Error 가 지원 하지 않 는 class 버 전 오 류 를 던 집 니 다.이 오 류 는 특히 JDK 5 와 JDK 5 이전 버 전에 서 뚜렷하게 나 타 났 다.JDK 5 는 자바 문법 에 많은 증 가 를 했 기 때문에 새로운 class 파일 요 소 를 도입 하여 이전 버 전의 JVM 이.class 파일 을 설명 하고 실행 할 수 없 게 되 었 다.이 클래스 는 JDK 5 의 새로운 요 소 를 사용 하지 않 았 더 라 도 JDK 5 가 생 성 한 class 파일,JDK 1.4 와 그 이전의 JVM 은 식별 할 수 없습니다!
 
2.해결 방법
(1)JDK 바로 바 꾸 기
예 를 들 어 Eclipse 나 MyEclipse IDE 도 구 는 첫 번 째 옵션 인 자바-컴 파일 러 에 들 어가 면 기본 컴 파일 러 의 등급 을 볼 수 있 습 니 다.여 기 는 JVM 에 대응 하 는 버 전 으로 바 꾸 면 됩 니 다.
(2)Retroweaver 처리
원본 코드 를 개방 한 Retroweaver 프로젝트 는 JDK 5.0 컴 파 일 러 에서 생 성 된 바 이 너 리 클래스 를 classworking 기술 로 수정 하여 초기 JVM 과 함께 사용 할 수 있 도록 합 니 다.JDK 5 에서 생 성 된.class 파일 을 수정 하여 JVM 1.4 및 이전 버 전에 서 실행 할 수 있 는.class 파일 로 변경 합 니 다.현재 새 버 전의 IDE 편집 기 를 사용 하면 java.lang.Unsupported ClassVersion 오류 가 발생 할 수 있 습 니 다.
(3)MyEclipse 에서 Tomcat 와 같은 질문
 
MyEclipse----응용 서버 에서 Tomcat 이 사용 하 는 JDK 버 전 을 지정 하면 모두 설 정 된 JDK 를 사용 하여 프로그램 을 컴 파일 하고 실행 할 것 을 지정 합 니 다.낮은 버 전의 컴 파일 러 를 절대 사용 할 수 없 으 며,낮은 버 전에 서 프로그램 을 실행 하면 자바.lang.Unsupported ClassVersion Error 가 지원 하지 않 는 Class 버 전 오 류 를 던 집 니 다.Eclipse 에서 생 성 된 war 패키지 든 ant 파일 에서 war 패 키 지 를 생 성 하 든 저 버 전 컴 파일 러 로 컴 파일 하면 실행 중 오류 가 발생 하여 프로그램 을 시작 할 수 없습니다.Tomcat 로그 파일 을 보면 java.lang.Unsupported ClassVersionError 오류 가 발생 합 니 다.
 
===============================================================
http://www.thinksaas.cn/group/topic/200554/
인터넷 에서 많은 자 료 를 찾 아 보 았 는데 이 컴퓨터 에 두 개의 JDK 가 설치 되 어 있 고,JDK 버 전이 서로 다른 충돌 이 있 었 다 는 것 입 니 다.그러나 제 컴퓨터 에 한 개의 JDK 만 있 었 습 니 다.이 문 제 는 이 문제 가 아니 었 습 니 다.JDK 를 다시 설치 해도 소 용이 없 었 습 니 다.동료 가 대단 해서 문 제 를 찾 았 습 니 다.다음 그림 을 보 세 요.
<?xml version="1.0"encoding="UTF-8"?>
<faceted-project>
 <fixed facet="jst.java"/>
 <fixed facet="jst.utility"/>
 <installed facet="jst.java"version="5.0"/>
 <installed facet="jst.utility"version="1.0"/>
</faceted-project>

안의 5.0 은 수 정 된 것 이 고 수정 전 은 6.0 이다.
#Mon Jan 28 15:04:15 CST 2008
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5

안에 있 는 1.5 는 모두 1.6 에서 수정 되 었 습 니 다.이 프로젝트 는 동료 에 게 서 인수 인계 되 었 고 동 료 는 JDK 1.6 을 사 용 했 습 니 다.수정 한 후에 tomcat 를 다시 시작 하면 문제 가 해결 되 었 습 니 다.
 

좋은 웹페이지 즐겨찾기