查看class文件获取编译jdk版本信息
问题描述
一个纯Java项目,每次通过更换class文件实现项目更新。开发人员调试后正常运行,测试人员自行打包拉取class文件后报错。
原因分析
通过文件比对,发现开发人员与测试人员的class文件在开头存在差异,最终确定为测试人员使用jdk版本与项目不一致。
jdk版本区分
只看第一行的数据:
(1)前面8个字节CA FE BA BE是固定的。
(2)随后4个字节00 00是次版本号
(3)再后面的4个字节00 32是JDK的版本号(JDK1.6)。
JDK版本号对应关系如下:
34(对应十进制的50):JDK1.8
33(对应十进制的50):JDK1.7
32(对应十进制的50):JDK1.6