jfinal启动报错Unsupported major.minor version 51.0原因深入分析

    xiaoxiao2025-03-29  10

    导入了一个工程,使用了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

    转载请注明原文地址: https://ju.6miu.com/read-1297509.html
    最新回复(0)