A jar
는 단지 컨테이너입니다. 파일 아카이브 tar
입니다. META-INF 계층 jar
내에 흥미로운 정보가 포함되어있을 수 있지만, 컨텐츠 내에 클래스의 빈티지를 지정해야 할 의무는 없습니다. 이를 위해서는 파일을 검사해야합니다 .class
뿐만 피터 Lawrey이 원래의 질문에 코멘트에 언급, 당신은 반드시 주어진 내장 된 JDK 버전 알 수없는 class
파일을,하지만 당신은의 바이트 코드 클래스 버전을 찾을 수 있습니다 class
A의 포함 된 파일을 jar
.
예, 다소 짜증나지만 첫 번째 단계는에서 하나 이상의 클래스를 추출하는 것 jar
입니다. 예를 들면 다음과 같습니다.
$ jar xf log4j-1.2.15.jar
Cygwin이 설치된 Linux, Mac OS X 또는 Windows 에서 file (1) 명령은 클래스 버전을 알고 있습니다.
$ file ./org/apache/log4j/Appender.class
./org/apache/log4j/Appender.class: compiled Java class data, version 45.3
또는 javap
JDK에서 @ jikes.thunderbolt를 적절하게 지적하면 다음과 같습니다.
$ javap -v ./org/apache/log4j/Appender.class | grep major
major version: 45
그리고 당신이 또는 Windows
중 하나없이 환경 으로 강등file
grep
> javap -v ./org/apache/log4j/Appender.class | findstr major
major version: 45
FWIW, 나는 원래의 질문보다 javap
주어진 class
파일 에 대해 훨씬 더 많이 말할 것이라고 동의 할 것 입니다.
어쨌든 다른 클래스 버전은 다음과 같습니다.
$ file ~/bin/classes/P.class
/home/dave/bin/classes/P.class: compiled Java class data, version 50.0
클래스 버전 메이저 번호는 다음 Java JDK 버전에 해당합니다.
- 45.3 = 자바 1.1
- 46 = 자바 1.2
- 47 = 자바 1.3
- 48 = 자바 1.4
- 49 = 자바 5
- 50 = 자바 6
- 51 = 자바 7
- 52 = 자바 8
- 53 = 자바 9