2016-05-07 79 views
2

我在Tomcat 8服務器上部署Spring應用程序。該應用程序使用此maven repository的Jena API。當我打開瀏覽器的應用程序,它顯示了以下消息(相同的應用程序可以在沒有的時候我不使用耶拿API的任何問題打開):在Tomcat上運行Jena API的java.lang.UnsupportedClassVersionError 8

HTTP Status 500 - Handler processing failed; nested exception is java.lang.UnsupportedClassVersionError: org/apache/jena/query/QueryExecutionFactory : Unsupported major.minor version 52.0 (unable to load class org.apache.jena.query.QueryExecutionFactory)

我試圖改變的版本來解決這個問題Java的爲Tomcat 8.我打開sudo nano /etc/init/tomcat.conf,改變JAVA_HOME:

env JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre 

然後我重新啓動Tomcat的8服務器和重新部署我的應用程序,但同樣的問題依然存在。其實我注意到,由於某種原因,啓動服務器時JRE 7出現在日誌消息:

May 07, 2016 5:26:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Java Home: /usr/lib/jvm/java-7-oracle/jre May 07, 2016 5:26:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Version: 1.7.0_80-b15 May 07, 2016 5:26:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Vendor: Oracle Corporation

我不知道這可能是爲什麼這個問題是不固定的一個可能的原因。任何解決方案,高度讚賞。

P.S.我知道java.lang.UnsupportedClassVersionError是因爲在編譯期間JDK較高而JDK在運行時較低。那麼,我是否正確理解Jena API是使用較低的JDK編譯的?

+0

請確認使用:'回聲$ JAVA_HOME' –

+0

@victor索薩:'/ usr/lib中/ JVM/JAVA-8的OpenJDK-amd64' – Klue

+0

哪個Linux?檢查initscript – Marged

回答

3

其實據我可以在你提供的jar看到的,Jena主要版本是52這意味着它已經與Java 8編譯,我相信你的問題更由於這樣的事實:你Java 7的

Tomcat的運行有關如何知道一個類的版本的詳細信息,請參閱本answer

爲了表示Tomcat要使用的JDK,您需要設置JAVA_HOME到TH通過做這個出口JAVA_HOME=/usr/lib/jvm/java-8-oracleJDK不是JRE的e路徑。更多細節here

+0

你知道如何用java 8運行Tomcat嗎?正如我在我的回答中所解釋的,我試圖從'/ etc/init/tomcat.conf'中更改Tomcat的java,但它接受了另一個必須更改的配置。 – Klue

+0

您需要將JAVA_HOME設置爲jdk的路徑而不是JRE,因此請嘗試此env JAVA_HOME =/usr/lib/jvm/java-8-oracle –

+0

好的,謝謝。我會檢查它,重新編譯項目,並讓它知道它是否工作。 – Klue