【发布时间】:2015-08-12 11:36:35
【问题描述】:
使用命令构建我的应用程序时:
$> git push heroku master
应用程序工作正常,我可以运行自动化测试,但是当我通过 Jenkins 构建我的应用程序时,我从浏览器收到以下消息:
HTTP Status 500 - An exception occurred processing JSP page /university/universityList.jsp at line 18
15:
16: <jsp:include page="universitiesMenu.jsp" />
17:
18: <jsp:include page="universities.jsp" />
19:
20: </div>
21:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
...
root cause
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: br/usp/icmc/rest/ClientRestUniversity : Unsupported major.minor version 51.0 (unable to load class br.usp.icmc.rest.ClientRestUniversity)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)
...
root cause
java.lang.UnsupportedClassVersionError: br/usp/icmc/rest/ClientRestUniversity : Unsupported major.minor version 51.0 (unable to load class br.usp.icmc.rest.ClientRestUniversity)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2899)
...
完整的 Jenkins 日志文件:http://ricardoramos.url.ph/log_Jenkins.txt
为什么当我运行命令推送 heroku 时,应用程序和自动化测试正常工作,而当我由 Jenkins 部署时,我收到异常?我哪里错了?
【问题讨论】:
-
基于堆栈跟踪它的问题是用于编译时和运行时的不同版本的 java。请确保java版本相同。
-
我已经在我的 system.properties 文件中测试了 java 的版本 7 和 8,但仍然出现同样的问题。我如何知道我的项目在编译时和运行时使用了哪些版本的 java?
-
您可以在 IDE 中检查编译器的 java 版本,对于运行时,您可以检查 Web 或应用程序服务器支持的 java 版本。
-
您能否验证 Jetty 已配置为使用正确的 JDK 版本?
-
看起来 (Jetty changelog) 从 9.2.0 版本开始支持 JDK 8。这可能是寻找兼容性问题的潜在场所。