[英]Tomcat7 Starts with Incorrect Java Version
I know there are many questions on StackOverflow that provide a solution to this problem (and I have come all this way by following those solutions), but I am still stuck.The app runs fine locally on my machine, but I can't get this to work on a Ubuntu server. 我知道StackOverflow上有很多问题可以提供解决方案(我通过遵循这些解决方案来解决所有问题),但我仍然遇到问题。该应用程序在我的计算机上本地运行良好,但无法获得可以在Ubuntu服务器上使用。 Here is what I have done to tackle this problem:
这是我为解决此问题所做的工作:
Unsupported major.minor version 52.0
means there is a conflict with the Java version. Unsupported major.minor version 52.0
意味着与Java版本存在冲突。 I fixed this by installing Java 1.8 on my Ubuntu server and making it the default Java. java -version
and javac -version
are 1.80_40
on Ubuntu server and 1.8.0_31
on my local machine. java -version
和javac -version
在Ubuntu服务器上为1.8.0_31
在本地计算机上为1.80_40
。 $JAVA_HOME
path on Ubuntu server is /usr/lib/jvm/java-8-oracle/
$JAVA_HOME
路径是/usr/lib/jvm/java-8-oracle/
Here are the errors I get after deploying my WAR file: 以下是部署WAR文件后出现的错误:
java.lang.UnsupportedClassVersionError: com/appname/servlets/getServlet: Unsupported major.minor version 52.0 (unable to load class com.appname.servlets.getServlet)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
Edit: Please don't mark it as duplicate. 编辑:请不要将其标记为重复。 I feel my problem is something else because I know it is compiled and running on same versions (Java 1.8).
我觉得我的问题是其他问题,因为我知道它是在相同版本(Java 1.8)上编译并运行的。
Even though both java -version
and javac -version
were showing up as 1.8 in my Ubuntu server, I noticed that for some reason Tomcat was still using 1.7 when I visited its Manager-GUI (near bottom). 即使在我的Ubuntu服务器中
java -version
和javac -version
都显示为1.8,但我注意到由于某种原因,当我访问其Manager-GUI时,Tomcat仍使用1.7(位于底部)。
This issue was fixed with the help of this question on Ask Ubuntu. 这个问题是固定的帮助下这个问题上提出的Ubuntu。 Basically,
JAVA_HOME
needs to be updated for Tomcat as well using vi /etc/default/tomcat7
. 基本上,还需要使用
vi /etc/default/tomcat7
为 Tomcat更新JAVA_HOME
。 I set mine to /usr/lib/jvm/java-8-oracle
, restarted Tomcat, and now it shows the correct version in Tomcat. 我将我的设置为
/usr/lib/jvm/java-8-oracle
,重新启动了Tomcat,现在它在Tomcat中显示了正确的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.