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

首先用一些二进制查看器打开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.csdn.net/hongchangfirst/article/details/47443747

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst







你可能感兴趣的:(怎么知道Java class文件JDK编译的版本号)