怎么查看jar包的jdk编译版本

本文介绍了如何简单快捷地查看jar包所使用的JDK版本。通过解压jar包并找到METE-INF目录下的MANIFEST.MF文件,可以读取到创建该jar包时使用的JDK版本信息。

问题及解答

平常我们为了兼容,可能会查看jar包的jdk版本,怎么查看呢?

解答:其实很简单,就是通过解压软件把jar包解压,可以看到有个文件夹,名字叫METE-INF,它里面有个文件:MANIFEST.MF,通过notepad等工具把他打开,会看到这行文字:Created-By: 1.7.0_79,后面的那串数字就是版本号!

要确定某个 JAR 所使用的 JDK 版本,可以通过多种方法进行检查,具体取决于 JAR 的类型和其含的内容。以下是几种常见的方法: ### 方法一:使用 `javap` 查看类文件的版本 JAR 中的 `.class` 文件含了 Java 字节码,其版本号与编译时所使用的 JDK 版本相关。可以使用 `javap` 工具来查看类文件的版本信息。执行以下命令: ```bash javap -v <类文件路径> | grep "major version" ``` 例如: ```bash javap -v MyClass.class | grep "major version" ``` 输出的 `major version` 对应 JDK 版本如下: | Major Version | JDK Version | |---------------|-------------| | 45 | 1.1 | | 46 | 1.2 | | 47 | 1.3 | | 48 | 1.4 | | 49 | 5.0 | | 50 | 6.0 | | 51 | 7.0 | | 52 | 8.0 | | 53 | 9.0 | | 54 | 10.0 | | 55 | 11.0 | | 56 | 12.0 | | 57 | 13.0 | | 58 | 14.0 | | 59 | 15.0 | | 60 | 16.0 | | 61 | 17.0 | | 62 | 18.0 | | 63 | 19.0 | | 64 | 20.0 | | 65 | 21.0 | ### 方法二:查看 `MANIFEST.MF` 文件 JAR 的 `MANIFEST.MF` 文件中可能编译时使用的 JDK 信息。解压 JAR 文件后,进入 `META-INF` 目录并查看 `MANIFEST.MF` 文件。部分构建工具(如 Maven 或 Gradle)可能会在该文件中添加 `Build-Jdk` 字段,例如: ```plaintext Build-Jdk: 17.0.3 ``` 如果该字段存在,则可以直接从中获取 JDK 版本。 ### 方法三:使用 `jarsigner` 查看签名信息(适用于签名 JAR) 对于签名的 JAR 文件,可以使用 `jarsigner` 工具查看其签名信息,其中可能编译环境的 JDK 版本: ```bash jarsigner -verify -verbose <JAR文件路径> ``` 在输出中查找 `Timestamp` 或 `Signer` 信息,有时可以找到 JDK 版本相关的线索。 ### 方法四:使用第三方工具 可以使用一些第三方工具(如 [JD-GUI](http://java-decompiler.github.io/) 或 [CFR Decompiler](https://www.benf.org/other/cfr/))反编译 JAR ,并查看其生成的源码中是否含特定的 JDK 特性,例如 `var` 关键字(JDK 10 引入)或 `switch` 表达式(JDK 12 引入)。通过这些特性可以推断出大致的 JDK 版本。 ### 方法五:运行 JAR 文件并查看运行时版本 如果 JAR 文件是一个可执行文件,可以通过以下命令运行它,并查看运行时使用的 JDK 版本: ```bash java -version ``` 然后运行 JAR 文件: ```bash java -jar yourfile.jar ``` 注意,这种方法只能确认 JAR 文件是否兼容当前运行的 JDK 版本,不能直接确认其编译时使用的 JDK 版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值