【问题标题】:java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0 (unable to load classjava.lang.UnsupportedClassVersionError:不支持的major.minor 51.0版(无法加载类
【发布时间】:2014-07-11 14:26:45
【问题描述】:

项目详情:使用 JavaBridge 完成任务的 PHP 项目。我对这个项目的更新只针对 PHP 文件。

我现在查看了很多主题。我的Java编译版本是JDK1.6,我的服务器上运行的Java版本是:

java version "1.6.0_30"

我对这在我的设备上本地运行感到非常沮丧,但是当我在服务器上运行它时它失败了,tomacat 日志提供以下内容:

java.lang.UnsupportedClassVersionError: com/nlrt/reportgenerator/ReportGenerator : Unsupported major.minor version 51.0 (unable to load class com.nlrt.reportgenerator.ReportGenerator)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2840)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1668)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at php.java.bridge.Util.classForName(Util.java:1518)
    at php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445)
    at php.java.bridge.Request.handleRequest(Request.java:458)
    at php.java.bridge.Request.handleOneRequest(Request.java:510)
    at php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202)
    at php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250)
    at php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at php.java.servlet.PhpCGIFilter.doFilter(PhpCGIFilter.java:126)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)

【问题讨论】:

    标签: php-java-bridge unsupported-class-version


    【解决方案1】:

    这是一个类似的问题:How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

    我要做的是检查是否所有的 java 文件都是用相同的版本编译的。根据该线程,版本 51 是 J2SE 7。您需要确保没有任何东西依赖于 J2SE 7。PHP-Java 桥可能是用 J2SE 7 编译的,其余的是在 JDK 1.6 上编译的。

    【讨论】:

    • 是的,我是这么想的,但自从我上次让它工作后,我就再也没有碰过它。我如何判断 JavaBridge.war 是否符合 J2SE 7?
    • 请注意,我最近部署的 PHP 文件也从未做过任何更改。据我所知,这些文件保持不变。
    • 您的 IDE 使用的是什么?可能是您的 IDE 在 J2SE 7 中编译了一些东西。
    • 不,如上所述,我的 IDE 设置为我配置的 JDK。由于下载了 JavaBridge,因此下载的文件可能是 J2SE7。我使用了一份备份下载的副本,它解决了这个问题。
    【解决方案2】:

    使用已部署和备份的 JavaBridge 的原始下载版本解决。不确定我在本地下载的版本是否是 J2SE7,但是这个错误消失了。 :)

    备份总是救命稻草。

    【讨论】:

      【解决方案3】:

      我的一个类文件遇到了这个问题。

      我从中了解到的是,我使用 java 7 构建 war 文件,而 tomact 使用的是 java 6。

      我只是更改为 Java 7 :) 开始为我工作。

      【讨论】:

        【解决方案4】:

        在服务器上执行我的项目时出现同样的错误,但只需将JDK6更改为JDK7.0_51即可。

        【讨论】:

        • 这应该是一条评论
        猜你喜欢
        • 2012-08-15
        • 2014-03-17
        • 2012-10-10
        • 2016-01-10
        • 2012-06-29
        • 2013-02-02
        • 2012-02-17
        • 1970-01-01
        相关资源
        最近更新 更多