魔数与Class 文件的版本
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔数与Class 文件的版本相关的知识,希望对你有一定的参考价值。
每个Class 文件的头4 个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class 文件。使用魔数而不是扩展名来进行识别主要是基于安全方面的考虑,因为文件扩展名可以随意地改动。文件格式的制定者可以自由地选择魔数值,只要这个魔数值还没有被广泛采用过同时又不会引起混淆即可。
紧接着魔数的4 个字节存储的是Class 文件的版本号:第5 和第6 个字节是次版本号(MinorVersion),第7 和第8 个字节是主版本号(Major Version)。Java 的版本号是从45 开始的,JDK 1.1 之后的每个JDK 大版本发布主版本号向上加1 高版本的JDK 能向下兼容以前版本的Class 文件,但不能运行以后版本的Class 文件,即使文件格式并未发生任何变化,虚拟机也必须拒绝执行超过其版本号的Class 文件。
以上是关于魔数与Class 文件的版本的主要内容,如果未能解决你的问题,请参考以下文章
Java 虚拟机原理Class 字节码二进制文件分析 一 ( 字节码文件附加信息 | 魔数 | 次版本号 | 主版本号 | 常量池个数 )