Java - 哪个版本也是.jar文件?

Ash*_*nko 11 java jar

有没有办法找出用于构建.jar文件的JDK版本?

Mic*_*rdt 11

这是不可能的,因为您甚至不需要JDK来构建JAR文件 - 它只是一个包含类和清单文件的ZIP文件.

您可以找到的是使用什么版本的类文件格式.主要版本号映射到majorJDK版本:

J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)
Run Code Online (Sandbox Code Playgroud)

但是,java编译器可以选择使用先前版本的类文件格式,该格式经常用于实现向下兼容性.但是,如果您发现类文件版本的主要编号为50,则您知道这些类绝对不是使用Java 5或更早版本的JDK编译的.


Edw*_*uck 10

大多数罐子都是使用随jdk打包的"jar"工具构建的.

在SUN的JDK中,提供的"jar"工具将在嵌入的META-INF/MANIFEST.MF文件中添加"Created-By"行.

该行将指定创建JAR的JDK版本(在我的案例中为"Created-By:1.6.0_17(Sun Microsystems Inc.)")

其他Java供应商也倾向于这样做.


Nay*_*Zen 9

您可以从jar文件中提取类文件,并使用以下命令:

javap -verbose SomeClass | grep major
Run Code Online (Sandbox Code Playgroud)

应该给你类文件的版本号.


Jim*_*Jim 6

在JAR MANIFEST.MF中,可能有一个Build-Jdk属性应该是您正在寻找的属性.