网上有些人说可以用反编译工具或直接解压jar包查看META-INF\MANIFEST.MF的Build-Jdk属性,这个属性值和jar包jdk实际的版本是不一致的,这个属性值代表的应该是本地的jdk版本。
我在官网上也没查到相应的资料。
https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Intro
1.如何正确的查找jar包的jdk的版本
使用jdk自带的工具,将jar包解压用命令读取某个类的字节码信息
javap -v App.class

major version 为50表示使用jdk1.6编译的。
而反编译工具显示的build-jdk为1.8,这是本地jdk的版本,和jar包的编译版本估计是2个不同的概念了。

2.jdk版本和major version对应关系:
JDK 1.8 = 52,
JDK 1.7= 51,
JDK 1.6= 50,
JDK 1.5 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
本文探讨了如何准确地确定Java jar包的编译JDK版本,通过使用javap工具读取字节码文件,解释了Build-Jdk属性与实际编译版本的区别,并提供了JDK版本与字节码majorversion的对应关系。

1万+

被折叠的 条评论
为什么被折叠?



