用于在Tomcat 8上运行Jena API的java.lang.UnsupportedClassVersionError

时间:2016-05-07 15:35:47

标签: java tomcat jvm jena

我正在Tomcat 8服务器上部署Spring应用程序。该应用程序使用此maven repository中的Jena API。当我在浏览器中打开应用程序时,它显示以下消息(当我不使用Jena API时,可以毫无问题地打开相同的应用程序):

  

HTTP状态500 - 处理程序处理失败;嵌套异常是   因为java.lang.UnsupportedClassVersionError:   org / apache / jena / query / QueryExecutionFactory:不支持的major.minor   版本52.0(无法加载类   org.apache.jena.query.QueryExecutionFactory)

我尝试通过更改Tomcat 8的Java版本来解决此问题。我打开了sudo nano /etc/init/tomcat.conf并更改了JAVA_HOME:

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

然后我重新启动了Tomcat 8服务器并重新部署了我的应用程序,但同样的问题仍然存在。事实上,我注意到由于某种原因,JRE 7在启动服务器时出现在日志消息中:

  

2016年5月7日下午5:26:11   org.apache.catalina.startup.VersionLoggerListener log INFO:Java Home:   / usr / lib / jvm / java-7-oracle / jre 2016年5月7日下午5:26:11   org.apache.catalina.startup.VersionLoggerListener log INFO:JVM   版本:1.7.0_80-b15 2016年5月7日下午5:26:11   org.apache.catalina.startup.VersionLoggerListener log INFO:JVM   供应商:Oracle Corporation

我不确定这是否可能是导致问题无法解决的原因。任何解决方案都非常感谢。

P.S。我知道java.lang.UnsupportedClassVersionError是因为在编译期间JDK较高而在运行时期间JDK较低而发生的。那么,我是否正确理解Jena API是用较低的JDK编译的?

1 个答案:

答案 0 :(得分:3)

实际上,只要我在你提供的jar中看到,Jena的主要版本是52,这意味着它已经使用java 8编译,我相信您的问题更多是因为您使用 java 7

运行tomcat

有关如何了解课程版本的详细信息,请参阅此answer

要指出Tomcat要使用哪个JDK,您需要通过执行此导出将JAVA_HOME设置为JDK而不是JRE的路径JAVA_HOME=/usr/lib/jvm/java-8-oracle。更多详情here