查看class文件java编译时使用版本

本文介绍如何使用二进制查看器如od或hexdump工具打开并解析Java Class文件,重点讲解了magic字段的作用以及如何通过查看文件头部信息确定Class文件的版本。

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

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

find . -name 文件名

od -x hello.class

或者

hexdump hello.class

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

feca beba 0000 3300

 

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

javap -verbose *(无后缀)>message.txt

              十六进制   

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版本的虚拟机去运行这个了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值