一个合法的class文件以固定的0xCAFEBABE格式开始,所以需要先读取4个字节,判断文件二进制格式是否是合法。
u4 magic;u2 minor_version;u2 major_version;
魔数和版本号解析代码片段:
// u4 magic;int magic = dis.readInt();// 校验文件魔数if (0xCAFEBABE == magic) {this.magic = magic;// u2 minor_versionthis.minor = dis.readUnsignedShort();// u2 major_version;this.major = dis.readUnsignedShort();}
解析结果:
{"magic": -889275714,"minor": 0,"major": 51}
其中"major": 51对应的JDK版本是JDK1.7。
