jdk版本不匹配问题UnsupportedClassVersionError:

线上环境jdk版本为1.7

如果本地程序以1.8版本打包部署,则会报如下错误:

java.lang.UnsupportedClassVersionError: com/tydic/comm/CommTools com.tydic.servlet.DataReportJsonServlet.doPost(DataReportJsonServlet.java:84)

通过sublimetext打开class文件,可以看到字节码。

其中0000 表示子版本号,0034表示主版本号。即版本号为0x0034=52,jdk版本为1.8

jdk版本 主版本号 次版本号
1.0 44 3
1.1 45 3
1.2 46 0
1.3 47 0
1.4 48 0
1.5 49 0
1.6 50 0
1.7 51 0

1.8

52 0

dk中包含工具java.exe(作用:启动虚拟机运行字节码文件)、javac.exe(作用:将java源文件编译为字节码文件),jdk和java、javac的版本是一致的。javac决定class文件的版本号。

当java.exe运行字节码文件时,首先检查字节码文件的版本号。当字节码文件版本号对应的jdk版本小于等于java.exe的版本时可以正常运行,软件兼容。反之则不行。即1.9的javac编译的字节码文件,1.8的java.exe运行就会报错

猜你喜欢

转载自blog.csdn.net/HelloKitty520123/article/details/88838415
今日推荐