有没有办法找出用于构建.jar文件的JDK版本?
答案 0 :(得分:11)
这是不可能的,因为您甚至不需要JDK来构建JAR文件 - 它只是一个包含类和清单文件的ZIP文件。
您可以找到的是the class file format的使用版本。主要版本号映射到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)
但是,java编译器可以选择使用以前版本的类文件格式,该格式经常用于实现向下兼容性。但是,如果您发现类文件版本的主要编号为50,则您知道这些类绝对不是使用Java 5或更早版本的JDK编译的。
答案 1 :(得分:10)
大多数罐子都是使用随jdk打包的“jar”工具构建的。
在SUN的JDK中,提供的“jar”工具将在嵌入的META-INF / MANIFEST.MF文件中添加“Created-By”行。
该行将指定创建JAR的JDK版本(在我的案例中为“Created-By:1.6.0_17(Sun Microsystems Inc.)”)
其他Java供应商也倾向于这样做。
答案 2 :(得分:8)
您可以从jar文件中提取类文件,并使用以下命令:
javap -verbose SomeClass | grep major
应该为您提供类文件的版本号。
答案 3 :(得分:6)
在Jars MANIFEST.MF中,可能有一个Build-Jdk属性应该是您正在寻找的属性。