简体   繁体   English

Tomcat7以不正确的Java版本开头

[英]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: 这是我为解决此问题所做的工作:

  1. I understand that 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. 我通过在Ubuntu服务器上安装Java 1.8并将其设置为默认Java来解决此问题。
  2. My java -version and javac -version are 1.80_40 on Ubuntu server and 1.8.0_31 on my local machine. 我的java -versionjavac -version在Ubuntu服务器上为1.8.0_31在本地计算机上为1.80_40
  3. My $JAVA_HOME path on Ubuntu server is /usr/lib/jvm/java-8-oracle/ 我在Ubuntu服务器上的$JAVA_HOME路径是/usr/lib/jvm/java-8-oracle/
  4. I restarted both Tomcat and Postgres after doing this (not that it matters?) 完成此操作后,我重新启动了Tomcat和Postgres(这不重要吗?)

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 -versionjavac -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM