Tomcat7以不正确的Java版本启动

时间:2015-04-07 04:36:00

标签: java ubuntu

我知道StackOverflow上有很多问题可以解决这个问题(我已经通过这些解决方案来实现这一点了),但我仍然卡住了。应用程序在我的机器上本地运行正常,但我可以不能让它在Ubuntu服务器上运行。以下是我为解决这个问题所做的工作:

  1. 我知道Unsupported major.minor version 52.0表示与Java版本存在冲突。我通过在我的Ubuntu服务器上安装Java 1.8并使其成为默认的Java来解决这个问题。
  2. 我的java -versionjavac -version在Ubuntu服务器上是1.80_40,在我的本地计算机上是1.8.0_31
  3. Ubuntu服务器上的$JAVA_HOME路径为/usr/lib/jvm/java-8-oracle/
  4. 我这样做后重启了Tomcat和Postgres(不重要吗?)
  5. 以下是部署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)
    

    编辑:请不要将其标记为重复。我觉得我的问题是别的,因为我知道它是在相同版本(Java 1.8)上编译和运行的。

2 个答案:

答案 0 :(得分:0)

尽管我的Ubuntu服务器中java -versionjavac -version都显示为1.8,但我注意到Tomcat在访问其Manager-GUI(底部附近)时仍然使用1.7。

在Ask Ubuntu的this question帮助下解决了这个问题。基本上,JAVA_HOME需要更新 Tomcat以及使用vi /etc/default/tomcat7。我将我设置为/usr/lib/jvm/java-8-oracle,重新启动Tomcat,现在它在Tomcat中显示正确的版本。

答案 1 :(得分:0)

为了解决windows环境下的Java版本问题,我们需要以管理员身份运行Tomcat7w.exe,将jvm.dll的路径改为预期的Java home目录路径。

例如 - C:\Program Files\Java\jdk1.8.0_221\jre\bin\server\jvm.dll

如果您无法通过运行 Tomcat7w.exe 来打开配置窗口,那么可以对已注册的 Tomcat7 服务的注册表项进行丑陋的修改,以更改 JVM 路径,如下所示 -

enter image description here

Tomcat 服务需要刷新(在 services.msc 中)并重新启动以使 Java 更改生效。希望这个答案可以节省在 Windows 环境中遇到类似问题的人的时间。