使用 javap 命令查看 class 文件 JDK 编译版本,避免 Unsupported major.minor version 异常

  发表人 Seves

Unsupported major.minor version

之前遇到了同一 class 文件在不同 JRE 环境的 WEB 服务下运行报 Unsupported major.minor version 异常的问题,出现此问题的原因是编译环境 JDK 版本高于运行环境,所以使编译环境和运行环境的版本一致,可以避免很多不必要的错误。记录一下。

可以使用 javap 命令查看编译版本:

javap -verbose ClassName.class
javap-verbose.png

可以看出 major version: 52 对应 java 1.8.0
java-version.png
十六进制.png

major.minor version 版本对照表

编译版本 target 参数 十六进制 major.minor 十进制 major.minor
jdk1.1.8 不能带 target 参数 00 03 00 2D 45.3
jdk1.2.2 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.2.2 -target 1.2 00 00 00 2E 46.0
jdk1.3.1_19 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.3.1_19 -target 1.3 00 00 00 2F 47.0
j2sdk1.4.2_10 不带(默认为 -target 1.2) 00 00 00 2E 46.0
j2sdk1.4.2_10 -target 1.4 00 00 00 30 48.0
jdk1.5.0_11 不带(默认为 -target 1.5) 00 00 00 31 49.0
jdk1.5.0_11 -target 1.4 -source 1.4 00 00 00 30 48.0
jdk1.6.0_01 不带(默认为 -target 1.6) 00 00 00 32 50.0
jdk1.6.0_01 -target 1.5 00 00 00 31 49.0
jdk1.6.0_01 -target 1.4 -source 1.4 00 00 00 30 48.0
jdk1.7.0 不带(默认为 -target 1.6) 00 00 00 32 50.0
jdk1.7.0 -target 1.7 00 00 00 33 51.0
jdk1.7.0 -target 1.4 -source 1.4 00 00 00 30 48.0
jdk1.8.0 -target 1.8 00 00 00 34 52.0
Apache Harmony 5.0M3 不带(默认为 -target 1.2) 00 00 00 2E 46.0
Apache Harmony 5.0M3 -target 1.4 00 00 00 30 48.0

END.


作者:星柒天出处:https://zixizixi.cn/
本文发布于 子兮子兮 博客,欢迎转载,但未经作者同意请保留此声明,并在文章页面明显位置给出原文连接。

35