导入了一个工程,使用了jfinal框架,部署到tomcat,启动之后,发现报如下错误
java.lang.UnsupportedClassVersionError: com/jfinal/core/JFinalFilter : Unsupported major.minor version 51.0 (unable to load class com.jfinal.core.JFinalFilter)
.................................................................
解决办法:更换tomcat的jre版本,换成1.7+ windows 环境下的tomcat 更改java_home;eclipse中见下图。
分析过程:Mirror 51直觉应该是jdk版本的问题,原因是:使用了低版本的jdk加载了高版本的class文件,百度查找都说更改java compiler与项目使用的jdk保持一致,但更改之后仍然报错,启动tomcat报错,于是找到了jfinal jar包中的这个class文件,发现是jdk1.7编译的,感觉问题应该出在tomcat 所使用的jdk,于是将windows中java_home改为1.8版本的jdk(jdk版本向下兼容),运行正常,没有报错,于是立马想到肯定是eclipse中tomcat使用的jdk版本低于1.7,于是将其改成1.8后,eclipse中运行项目也正常。
PS:开源项目发布的jar包,居然使用1.7编译,这导致使用1.6版本的报错,建议为了兼容性,jFinal应该使用1.6编译,至少我使用的spring从来没出现过这种问题。
错误还原:public class TestHello{ public static void main(String[] args) { System.out.println("Test Hello"); } }此段java代码,使用jdk1.8编译,放在jdk1.6加载就会出现以下错误 原因是:jdk向下兼容性,低版本的不能加载高版本的class
minor版本对应:
jdk1.8 minor version:52
jdk1.7 minor version:51
jdk1.6 minor version:50