怎么知道Java class文件JDK编译的版本号

通过使用od或hexdump等二进制查看工具打开Java class文件,查看magic字段后的版本号。前四个字节表示特殊符号,接下来的两个字节是次要版本号,然后的两个字节是主要版本号。例如,33对应的JDK版本为1.7。如果遇到'unsupported major.minor version'错误,可能是因为使用了低版本JVM尝试运行高版本JDK编译的文件。

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

首先用一些二进制查看器打开class文件,比如od或者hexdump工具。


od -x hello.class

或者

hexdump hello.class

我们会看到类似于下面的输出:

feca beba 0000 3300


这里我们看到前四个字节是Java class的特殊符号,叫做magic字段,用来告诉JVM这是个class文件,之后的两个字节是minor版本号,再之后的两个字节是major版本号,我们看到时33,对应下表我们知道33时JDK1.7编译的版本号。


              十六进制   

JDK1.5      31

JDK1.6      32 

JDK1.7      33

JDK8         34


因为Java是向后兼容的,所以高版本的兼容低版本的,所以有时候你遇到java报: unsupported major.minor version 51,那就是你用低版本的虚拟机去运行高版本JDK编译的class文件了,所以低版本的虚拟机就抱怨了。这里的51是十进制,也就是十六进制的33,及对应JDK1.7,如果出现这种错误,你肯定是使用低于1.7版本的虚拟机去运行这个了。

原文:http://blog.youkuaiyun.com/hongchangfirst/article/details/47443747

作者:hongchangfirst

hongchangfirst的主页:http://blog.youkuaiyun.com/hongchangfirst







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值