티스토리 뷰
반응형
가끔 java.lang.UnsupportedClassVersionError를 만나는 경우가 있다. 이는 실행하는 JVM이 지원하지 못하는 java class version을 로드할려고 할 경우 발생한다.
Java는 버전이 올라가면서 class 파일의 포맷과 그 버전도 올라가기도 한다. 물론 상위 JVM은 이전 버전의 java compiler로 컴파일된 이전 버전의 java class도 구동을 하지만 그 반대는 아니다.
즉 최신의 java class 전의 java class를 예전의 JVM으로 구동할 수 없을 수 있다는 것이다. 이 경우 앞의 에러가 발생한다.
편집기로 Java Class 버전 확인하기
의외로 간단하며 컴파일된 Java class를 울트라에디터 같이 HEX 모드로 볼 수 있는 편집기로 열어본다.
그러면 맨앞에 다음과 같이 시작한다.
00000000h: CA FE BA BE 00 00 00 32 00 67 07 00 02 01 00 27
...
...
CA FE BA BE 는 Java class라는 Magic Number이고 그 뒤에 java class version이 보인다. 위의 경우는 32인데 이것은 16진수이고 10진수로 계산하면 50 이된다. 즉 이 java class의 version은 50이라는 것이다.
JDK 버전마다 class 버전은 다음과 같다.
- 48: java 1.4.2
- 49: java 5
- 50: java 6
즉 이 클래스는 java 6 로 컴파일 된 클래스이며 java 5나 그 이하의 jvm에서 이 클래스를 사용할 경우 앞의 에러를 만날 수 있다.
javap로 확인하기
JDK에 javap라는 명령어가 있다. java class의 최상위 패키지 디렉토리 아래에서 다음과 예와 같이 입력한다.
prompt> javap -verbose kr.nextree.nexdic.actions.AddTermAction
public class kr.nextree.nexdic.actions.AddTermAction extends org.eclipse.jface.action.Action
SourceFile: "AddTermAction.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // kr/nextree/nexdic/actions/AddTermAction
const #2 = Asciz kr/nextree/nexdic/actions/AddTermAction;
const #3 = class #4; // org/eclipse/jface/action/Action
...
public class kr.nextree.nexdic.actions.AddTermAction extends org.eclipse.jface.action.Action
SourceFile: "AddTermAction.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // kr/nextree/nexdic/actions/AddTermAction
const #2 = Asciz kr/nextree/nexdic/actions/AddTermAction;
const #3 = class #4; // org/eclipse/jface/action/Action
...
major version을 보면 class 버전을 확인할 수 있다.
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 냄새
- 윈도우10
- 의료
- 생명과학
- DNA
- 흡연
- 보건소
- 믹스커피
- 보건
- 과학
- 100일
- 오라클
- java
- 설탕
- 통신
- 챔픽스
- 금연
- 지진
- 유전자
- 챔픽스 후기 금연
- oracle
- 금연일기
- 챔픽스 후기
- 다이어트
- 인공지능
- 뇌
- 부작용
- 상식
- 금단증상
- 단백질
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함