查看class文件用哪个jdk版本编译
一次问题排查中需要知道线上class文件是由哪个版本jdk编译的,于是学习了下。
第一种方法
首先使用EditPlus打开,打开后会有一个弹框让我们选择以什么字符编码打开class文件,这里我们选择Hex viewer(16进制字符编码)
然后查看第一行的前8个组合:CA FE BA BE 00 00 00 32
1:前面8个字节CA FE BA BE是固定的。
2:随后4个字节00 00是次版本号
3:再后面的4个字节00 34是JDK的版本号。
JDK版本号对应关系如下:
34(对应十进制的50):JDK1.8
33(对应十进制的50):JDK1.7
32(对应十进制的50):JDK1.6
31(对应十进制的49):JDK1.5
30(对应十进制的48):JDK1.4
2F(对应十进制的47):JDK1.3
2E(对应十进制的46):JDK1.2
这里我们class文件第一行最后2个字节是32,所以class文件是jdk1.6编译的
第二种方法
在linux上使用file命令,可以直接查看class文件的java编译版本