문제
.class 파일을 검색 한 다음 컴파일 된 버전을 표시하는 도구를 아는 사람이 있습니까?
16 진 편집기에서 개별적으로 볼 수 있다는 것을 알고 있지만 살펴볼 클래스 파일이 많이 있습니다 (내 거대한 응용 프로그램의 일부가 어떤 이유로 Java6로 컴파일되고 있음).
해결책
제공되는 javap 도구 사용JDK와 함께.-verbose
옵션은 클래스 파일의 버전 번호를 인쇄합니다.
라코 디스
버전 만 표시하려면 : 라코 디스
다른 팁
클래스 파일 서명 을 사용하고 타사 API없이 이러한 값을 가져옵니다. 처음 8 바이트 만 읽으면됩니다. 라코 디스
클래스 파일 버전 51.0 (Java 7)의 경우 여는 바이트는 다음과 같습니다. 라코 디스
... 여기서 0xCAFEBABE는 매직 바이트, 0x0000은 부 버전, 0x0033은 주 버전입니다. 라코 디스
워킹 디렉토리 ( 파일 ) 및 아카이브 ( JarFile )에서 클래스 찾기 파일은 사소합니다.
Oracle의 Joe Darcy의 블로그 에는 클래스 버전에서 JDK 버전으로 매핑 Java 7까지 라코 디스
유닉스 계열 라코 디스
파일 유형과 버전도 제공합니다.출력은 다음과 같습니다. <인용구>
컴파일 된 Java 클래스 데이터, 버전 49.0
유닉스 시스템을 사용하는 경우 라코 디스
(내 파일 버전은 "컴파일 된 Java 클래스 데이터, 버전 50.0"(java6 클래스의 경우))입니다.
또 다른 자바 버전 확인 라코 디스
이것도 누군가에게 도움이 될 수 있습니다..class를 컴파일 / 빌드하는 데 사용되는 JAVA 버전을 얻는 더 쉬운 방법이있는 것 같습니다.이 방법은 JAVA 버전에서 응용 프로그램 / 클래스 자체 검사에 유용합니다.
JDK 라이브러리를 살펴본 결과 다음과 같은 유용한 상수를 찾았습니다. com.sun.deploy.config.BuiltInProperties.CURRENT_VERSION . JAVA JDK에서 언제부터인지 모르겠습니다.
여러 버전 상수에 대해이 코드를 시도하면 다음과 같은 결과가 나타납니다.
src : 라코 디스
출력 : 라코 디스
클래스 바이트 코드에는 실제로 저장된 상수가 있습니다. Main.call의 빨간색으로 표시된 부분을 참조하십시오.- constant.class 바이트 코드에 저장
Constant는 JAVA 버전이 오래되었는지 확인하는 데 사용되는 클래스에 있습니다 ( Java가 오래된 것을 확인하는 방법 ) ...