java:javap查看class文件的JDK版本塈JDK版本与major version(45~55)的对照表

本文解释了在运行Java应用时遇到UnsupportedClassVersionError的原因,即JDK版本不兼容。通过介绍如何使用javap检查类文件的majorversion,以及如何确保JDK与编译版本一致,帮助读者解决版本冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行 Java 应用程序时,JRE 版本必须与用于编译应用程序的 JDK 版本匹配或更高。
当尝试使用较低版本的 Java 运行高版本 JDK编译的应用程序时,就会抛出UnsupportedClassVersionError异常。

java.lang.UnsupportedClassVersionError: org/antlr/v4/Tool has been compiled by a 
more recent version of the Java Runtime (class file version 55.0), this version 
of the Java Runtime only recognizes class file versions up to 52.0

在本文中,我们将介绍如何通过JDK工具检查class的 JDK 版本。

Java版本号与major version

Java 在类文件中使用两位数字定义主版本号(major version)。以下是 Java 版本与major version的对照表:

JDKmajor version
Java 1.145
Java 1.246
Java 1.347
Java 1.448
Java 5(1.5)49
Java 6(1.6)50
Java 7(1.7)51
Java 852
Java 953
Java 1054
Java 1155

javap 查看major version

JDK提供的工具javap可以获取一个类(.class)文件的各种详细信息,也包括class中定义的major version

下面是个简单的HelloWorld.java程序

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello world!!");
	}
}

JDK编译后生成HelloWorld.class,就可以用javap查看生成的class中的major version

Linux:

javap -v HelloWorld.class | grep major

Windows:

javap -v HelloWorld.class | findstr major

如果你希望查看一个jar中的类的major version.
antlr-4.11.1-complete.jar 为例
Linux:

javap -v -cp /path/antlr-4.11.1-complete.jar org.antlr.v4.Tool | grep major

Windows:

javap -v -cp /path/antlr-4.11.1-complete.jar org.antlr.v4.Tool | findstr major

-cp 即-classpath, 指定查找类文件的位置
org.antlr.v4.Tool 即为antlr-4.11.1-complete.jar中的一个类的完整名称

要知道某个JAR文件需要依赖哪种版本JDK运行环境,可以通过检查该JAR文件中包含的字节码所对应的Java文件版本号来确定。以下是几种常用的方法: ### 方法一:通过`javap`工具查看 可以使用 `javap -v` 命令反汇编 `.class` 文件,并观察其中的“major version”字段。 #### 步骤: 1. **提取 JAR 中的 .class 文件** 使用解压工具打开 JAR 包并找到目标 `.class` 文件。 2. **执行命令** 打开终端或命令行窗口,在对应目录下输入以下内容(假设你要分析的是 MyClass.class): ```bash javap -v MyClass.class | grep "major" ``` 3. **判断 JDK 版本** 根据返回结果中的 major version 号,参照下面的 Java版本对照表确认其所需的最低 JDK 版本: - Major Version 45JDK 1.0 和 JDK 1.1 - Major Version 46 → JDK 1.2 - Major Version 47 → JDK 1.3 - Major Version 48 → JDK 1.4 - Major Version 49 → JDK 5 - Major Version 50 → JDK 6 - Major Version 51 → JDK 7 - Major Version 52 → JDK 8 - Major Version 53 → JDK 9 - Major Version 54 → JDK 10 - Major Version 55JDK 11 ### 方法二:借助第三方工具 如果觉得手动操作繁琐的话,也可以考虑一些专门用于解析 jar 的图形化界面软件如 JD-GUI 或者在线服务网站上传检测它们能自动给出相关信息包括使用的 jdk 编译信息等详情页面上会有说明文档指导如何下载安装这类插件来进行深入分析工作流程。 总之选择适合自己实际需求的方式即可完成任务!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值