【发布时间】:2016-05-07 15:35:46
【问题描述】:
我正在 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 日志信息:Java 主页: /usr/lib/jvm/java-7-oracle/jre 2016 年 5 月 7 日下午 5:26:11 org.apache.catalina.startup.VersionLoggerListener 日志信息:JVM 版本:1.7.0_80-b15 2016 年 5 月 7 日下午 5:26:11 org.apache.catalina.startup.VersionLoggerListener 日志信息:JVM 供应商:甲骨文公司
我不确定这是否是问题未解决的可能原因。任何解决方案都受到高度赞赏。
附:我知道java.lang.UnsupportedClassVersionError 的发生是因为编译时JDK 较高而运行时JDK 较低。那么,Jena API 是用较低的 JDK 编译的,我理解正确吗?
【问题讨论】:
-
请确认使用:
echo $JAVA_HOME -
@victor sosa:
/usr/lib/jvm/java-8-openjdk-amd64 -
哪个 Linux ?检查初始化脚本
-
请将
/etc/init/tomcat.conf设置为env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64; JAVA_HOME 环境变量应设置为 JDK 的基本路径。