有时候我们需要知道一个jar是 编译是依赖JAVA 哪个版本的需求。
如:
我们知道该程sjjcb-dev-lyq-example-jdk11.jar 编译JDK 是 11,但是具体生产的类是11还是其他的呢?
先找到具体的class文件的位置
用UE 16进制打开ApplicationStart.class
只看第一行:
前面8个字节CA FE BA BE是固定的
随后4个字节00 00是次版本号
再后面的4个字节00 34是JDK的版本号(JDK1.8)
JDK版本号对应关系如下:
37(对应十进制的50):JDK1.11
36(对应十进制的50):JDK1.10
35(对应十进制的50):JDK1.9
34(对应十进制的50):JDK1.8
33(对应十进制的50):JDK1.7
32(对应十进制的50):JDK1.6
我们知道这个类依赖JDK11打包,编译也是用11的
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
重新修改maven settings.xml
检查编译后的类
变成了34了 所以看看编译用JDK1.8打包的。
你学会了吗?
,