Java class文件查看对应的JDK版本

问题:

在Java应用项目中,有时会发现编译好的类或包拿到项目现场环境部署时会报错,大概意思就是用高版本JDK编译出来的包,在低版本的JDK中不能运行。于是只好重新编译为兼容低版本JDK的class,但怎样确认编译出的class(比如JDK1.8编译)是不是指定的版本(运行环境JDK1.7)呢?

解决:

通常有2个办法,一是使用ultraedit等工具查看class文件16进制编码,前面8个字节CA FE BA BE 是固定的,之后4个字节00 00 是次版本号,次版本号后面的4个字节00 33  是jdk的版本号;二是使用javap工具查看JDK编码。在获取JDK编码后,即可查询下表得知对应的JDK版本号。

(1)通过文本编辑工具查看

这里看到的major version是16进制。

(2)通过javap工具查看

这里major version是十进制。

 

 

版本号对应十进制jdk版本号
2E46jdk1.2
2F47jdk1.3
3048jdk1.4
3149jdk1.5
3250jdk1.6
3351jdk1.7
3452jdk1.8

 附:

高版本JDK编译出兼容低版本JDK的类:

例如使用JDK1.8版本,编译出1.7版本的class:

javac –source 1.7 –target 1.7 Xxx.java

posted @ 2020-11-26 20:06  hongweigg  阅读(123)  评论(0编辑  收藏  举报