最近搞的一个项目,是使用Ant进行编译和打包的,发布到Linux服务器的Tomcat下运行。tomcat启动后,观察日志发现以下异常Unsupported major.minor version 52.0
,项目无法访问。
当大家在日志中看到Unsupported major.minor version 52.0
这个字样的时候,有一些开发经验的同学第一时间就能反映出应该是jdk版本的问题造成的,但是具体造成的原因是什么呢?去网上找解决方案,大多数都是只言片语,在这里总结一下问题处理过程。
1. 分析异常
1.1 环境分析
本地开发环境
- Ant 版本:1.9.15
- JAVA环境:1.8.0_241
服务器环境 - JAVA环境:1.7.0_80
- tomcat版本:7.0.90
在本地使用Ant进行源码编译,并打war包,发布到服务器上的tomcat下运行。
1.2 异常字面分析
Unsupported major.minor version 52.0
,意思就是服务器上的jdk1.7,在加载编译好的Class文件的时候,发现Class文件版本是52.0,无法支持这个版本。有如下的问题需要逐个明确
- 52.0这个版本是哪来的?
我们在使用某一个JDK版本,使用javac
命令进行编译的时候,生成的Class文件中会对编译的时使用的JDK版本进行标记的。这个52.0就是标记,标记与JDK版本是有一个对应关系的,具体如下:
Ja