宁波做网站排名的公司有哪些,教育网站颜色,传统营销渠道有哪些,郴州信息港网站文章目录 原理分析解决方案其它解决方案javap 命令行工具 在平时的 Java 开发中#xff0c;有时候我们需要知道某个 class 文件是由哪个版本的 Java 编译器编译生成的 原理分析
class 文件#xff0c;即字节码文件#xff0c;它有特定的二进制格式#xff0c;这种格式是由… 文章目录 原理分析解决方案其它解决方案javap 命令行工具 在平时的 Java 开发中有时候我们需要知道某个 class 文件是由哪个版本的 Java 编译器编译生成的 原理分析
class 文件即字节码文件它有特定的二进制格式这种格式是由 JVM 规范规定的不受特定硬件或操作系统的影响。 字节码文件的二进制格式主要有如下部分
magic number魔数开头4个字节始终为 CAFE BABEversion版本号接下来4个字节表示 Java 的版本。其中前2个字节是 minor version次版本号后2个字节是 major version主版本号
所以可以通过查看 class 文件的 major version 来确定其对应的编译器版本。
解决方案 实际上任何可以查看二进制格式文件的软件文本编辑器等都可以帮助我们确定 class 文件对应的 Java 编译器版本。这里抛砖引玉借助 Visual Studio Code 的一款叫 Hex Editor 的插件来确定。 打开 Visual Studio Code点击“插件”图标搜索并安装插件 Hex Editor
使用 Hex Editor 打开对应的 class 文件查看文件第一行的索引号为 06 及 07 这两个字节这里为 00 32得到对应的 major version
然后通过 Java 版本对照表即可知道 class 文件是由哪个版本的 Java 编译器编译生成的了比如上面示例的 class 文件对应编译器版本为 JDK 6
Java JDKmajor version(十进制)major version(十六进制)18620x3e17610x3d16600x3c15590x3b14580x3a13570x3912560x3811550x3710540x369530x358520x347510x336500x325490x311.4480x301.3470x2f1.2460x2e1.1450x2d
其它解决方案
javap 命令行工具 javapJava class file disassemblerJava 类文件反汇编器它是 JDK 附带的一个命令行工具用于反编译和显示 Java 字节码文件的详细信息通过该工具也可以确定 class 文件对应的 Java 编译器版本。 javap -verbose App.class