2015-04-07 31 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中顯示正確的版本。