JAVA & Open Framework2011. 6. 9. 13:29

Java class 파일이 JDK 의 어떤 버전으로 컴파일 되었는지를 확인하는 방법은

다음의 두가지 방법이 존재한다.

 

1. javap 를 이용하는 방법

클래스 파일 디렉토리 위치에서 다음의 명령어를 통해 확인이 가능하다.

 

javap –verbose [클래스파일명(.class는 제외)] | find /N "version"

 

image

 

2. class 파일의 hex 를 직접 확인하는 방법

class 파일을 hex 값 보기가 가능한 편집기(울트라 에디트 등) 으로 열어서

다음을 확인한다.

 

-.minor version : 4~5번 인덱스의 hex 값을 10진수로 변환한 값

-.major version : 6~7번 인덱스의 hex 값을 10진수로 변환한 값

image

   ※ major/minor 버전 별 JDK 실제 배포 버전(7번 인덱스 값으로 구분했을 경우)

   JDK 1.6 = hex 32(dec : 50)

   JDK 1.5 = hex 31(dec : 49)

   JDK 1.4 = hex 30(dec : 48)

   JDK 1.3 = hex 2F(dec : 47)

   JDK 1.2 = hex 2E(dec : 46)


위의 예의 경우 버전은 46.0 이다.

이 방법은 다음의 class 파일 구조를 설명한 문서에 기초한 방법이다.

 

ClassFile {
    u4 magic;
    u2 minor_version;
    u2 major_version;
    u2 constant_pool_count;
    cp_info constant_pool[constant_pool_count-1];
    u2 access_flags;
    u2 this_class;
    u2 super_class;
    u2 interfaces_count;
    u2 interfaces[interfaces_count];
    u2 fields_count;
    field_info fields[fields_count];
    u2 methods_count;
    method_info methods[methods_count];
    u2 attributes_count;
    attribute_info attributes[attributes_count];
    }

(http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html)


 


※ major/minor 버전 별 JDK 실제 배포 버전


  JDK 1.6 = hex 32(dec : 50)

  JDK 1.5 = hex 31(dec : 49)

  JDK 1.4 = hex 30(dec : 48)

  JDK 1.3 = hex 2F(dec : 47)

  JDK 1.2 = hex 2E(dec : 46)



- 출처 : http://lachesis76.blogspot.com/2010/12/java-class-jdk.html -

Posted by 아로나