maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)

有时候我们需要知道一个jar是 编译是依赖JAVA 哪个版本的需求。

如:

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(1)

我们知道该程sjjcb-dev-lyq-example-jdk11.jar 编译JDK 是 11,但是具体生产的类是11还是其他的呢?

先找到具体的class文件的位置

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(2)

用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

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(3)

我们知道这个类依赖JDK11打包,编译也是用11的

<maven.compiler.source>11</maven.compiler.source>

<maven.compiler.target>11</maven.compiler.target>

重新修改maven settings.xml

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(4)

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(5)

检查编译后的类

maven打包jar包老是不对(你还不知道java程序maven打包后如何查看jar的编译版本)(6)

变成了34了 所以看看编译用JDK1.8打包的。

你学会了吗?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页