首页 > 解决方案 > webapp和tomcat之间的Java版本不匹配

问题描述

我在 Eclipse 中编写了一个 webapp,部署在 Tomcat 8 中。该 webapp 包含一个电子邮件实用程序,用户可以通过该实用程序提交从网络服务器通过电子邮件发送给我的联系信息。

当我在 Eclipse 中运行 webapp(使用本地主机上的 Tomcat 实例)时,它可以工作。

我已将 webapp 部署到服务器,它似乎工作正常,直到我尝试发送联系信息。

当我单击调用 servlet 的表单中的提交按钮时,我得到了这个异常:

 java.lang.UnsupportedClassVersionError: com/electraink/rental/servlets/ContactInfo has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class com.electraink.rental.servlets.ContactInfo)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2500)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:844)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

不知道哪里不对劲。运行 Tomcat8 实例的服务器显示此版本的 Java:

[root@web1 downloads]# java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

Eclipse 项目使用jdk-1.8.0_45.

在我看来,Tomcat 使用的 JVM 比构建 webapp 的 JVM 新,而不是旧。

哪里不对劲了?我需要更新哪个 Java,更新到什么?(我最初在 Eclipse 中构建 webapp 时使用 Java 9,直到我看到这个错误,然后我降级到 Java 8)。

谢谢,杰瑞

标签: javaeclipsetomcat

解决方案


推荐阅读