关于JAVA CLASS使用的编译版本


一,魔数(magic)

每个Class文件的头四个字节称为魔数,它的唯一作用是用来确定该文件是否为一个能被虚拟机接受的Class文件。使用魔数而不使用文件扩展名是出于安全方面的考虑,因为文件扩展名可以很随意的被改动
magic:魔数,0xCAFEBABE(cafe babe)
二,Class文件版本(minor_version 和 major_version)

minor_version:占2字节,次版本号,0x0000
majro_version:占2字节,主版本号,0x0031,转化为十进制为49,是使用JDK1.5编译的。
JDK1.5:0x0031,JDK1.6:0x0032,JDK1.7:0x0033

高版本的JDK可以向下兼容以前版本的Class文件,但是无法运行以后版本的Class文件,即使文件格式并未发生变化

如果使用JDK1.5运行使用JDK1.6编译的Class文件,会报:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
就是由于JDK1.6编译的文件版本号超过了JDK1.5虚拟机所接受的范围

猜你喜欢

转载自iamh.iteye.com/blog/2294346
今日推荐