2015-04-07 35 views
1

我知道有StackOverflow上提供了解决这个问题(我已经通过下面这些解决方案来到此地)很多问题,但我仍然stuck.The应用程序运行正常在本地我的机器,但我不能让它在Ubuntu服务器上工作。这里是我已经做了解决这个问题:Tomcat7开始用不正确的Java版本

  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. $JAVA_HOME Ubuntu的服务器上的路径是/usr/lib/jvm/java-8-oracle/
  4. 我这样做后,重新启动Tomcat和Postgres的

这里是部署我的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)上编译和运行的。

+0

你是如何正确运行你的应用程序?你的服务器上安装了较老的java版本吗?你确定这些应用程序没有使用较老的Java版本(也许有人硬编码他们到一些启动脚本?) –

+0

@MateuszDymczyk - 当我用鼠标右键单击项目>在NetBeans属性,我看到Java平台是JDK 1.8中库标签。在Sources选项卡中,我将Source/Binary Format看作JDK 8. – mapr

+0

这是因为在编译时java的目标版本高于您现在尝试运行的版本。 (例如:编译的目标版本Java 1.8并在Java 1.7中运行) 请参阅此问题。 http://stackoverflow.com/questions/22489398/unsupported-major-minor-version-52-0 –

回答

0

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

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