2016-05-07 9 views
2

Ich bin Spring-Anwendung auf Tomcat 8 Server bereitstellen. Die Anwendung verwendet Jena API von dieser maven repository. Wenn ich die Anwendung in Browser öffnen, zeigt es die folgende Meldung (die gleiche Anwendung kann ohne Probleme geöffnet werden, wenn ich Jena API nicht wichtig):java.lang.UnsupportedClassVersionError zum Ausführen von Jena API auf Tomcat 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)

ich durch Änderung der Version dieses Problem zu lösen versuchte, Java für Tomcat 8. öffnete ich sudo nano /etc/init/tomcat.conf und geändert JAVA_HOME:

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

Dann neu gestartet ich Tomcat 8 Server und meine Anwendung umgeschichtet, aber das gleiche Problem weiterhin besteht. In der Tat bemerkte ich, dass aus irgendeinem Grunde JRE 7 in der Protokollmeldung erscheint, wenn Sie den Server starten:

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

Ich bin nicht sicher, ob dies könnte ein möglicher Grund sein, warum ist das Problem nicht behoben. Jede Lösung wird sehr geschätzt.

P.S. Ich weiß, dass java.lang.UnsupportedClassVersionError aufgrund eines höheren JDK während der Kompilierungszeit und niedriger JDK während der Laufzeit passiert. Also, verstehe ich richtig, dass Jena API mit niedrigeren JDK kompiliert wurde?

+0

bitte bestätigen Sie mit: 'echo $ JAVA_HOME' –

+0

@victor sosa:'/usr/lib/jvm/java-8-openjdk-amd64' – Klue

+0

Welche Linux? Überprüfen Sie das Initskript – Marged

Antwort

3

Eigentlich so weit wie ich in dem Glas sehen kann, die Sie zur Verfügung stellen, ist die Hauptversion von Jena52 was bedeutet, dass es mit kompilierte Java 8 gewesen ist, glaube ich, dass das Problem auf die Tatsache, mehr zurückzuführen ist, dass Sie laufen tomcat mit Java 7

Für weitere Informationen darüber, wie die Version einer Klasse wissen, finden Sie in diesem answer

Tomcat um anzuzeigen, welche JDK zu verwenden, können Sie die JAVA_HOME festlegen müssen Ate e Pfad eines JDK nicht ein JRE durch diesen Export JAVA_HOME=/usr/lib/jvm/java-8-oracle. Weitere Details here

+0

Wissen Sie, wie man Tomcat mit Java 8 ausführt? Wie ich in meiner Antwort erklärt habe, habe ich versucht, Tomcat's Java von '/ etc/init/tomcat.conf' zu ändern, aber es scheint, dass es noch eine andere Konfiguration gibt, die ich ändern musste. – Klue

+0

Sie müssen JAVA_HOME auf den Pfad der jdk nicht der JRE setzen, also versuchen Sie diese env JAVA_HOME =/usr/lib/jvm/java-8-oracle –

+0

Ok, danke. Ich werde es überprüfen, das Projekt neu kompilieren und Sie wissen lassen, ob es funktioniert. – Klue

Verwandte Themen