当前位置: 首页 > 知识库问答 >
问题:

tomcat UnsupportedClassVersionError

巫马磊
2023-03-14

我在Mac上安装了bitnami Tomcat 7(apache Tomcat mysql),使用java 1.7 76。我的Mac使用java 1.8运行时。当我将我的项目(在同一台Mac上用intellij制作)部署到tomcat并尝试运行它时,我得到了一个不受支持的ClassVersionError。我用哪个版本的JDK编译这个项目并不重要(我试过apple 1.6、oracle 1.7和oracle 1.8版本),我设置的语言级别似乎也不重要。运行应用程序的唯一方法是使用语言级别1.3(使用JDK 1.7/1.8)

为了解决这个问题,我现在将tomcat设置为在Mac上安装的1.8JDK上运行,然后配置intellij使用相同的JDK。现在一切都很好。

我的问题是:我是否总是需要使用与运行tomcat的java版本完全相同的JDK版本进行编译?还是我做错了什么。

完整错误:(有时还显示Unsupport tedClassVersionError:次要版本)

HTTP Status 500 - javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: test/TestClass

type Exception report

message javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: test/TestClass

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: test/TestClass
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: test/TestClass
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:94)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.UnsupportedClassVersionError: test/TestClass
    org.apache.jsp.index_jsp._jspService(index_jsp.java:74)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.61 logs.

共有1个答案

蔡宏大
2023-03-14

使用一个版本的JDK和JRE进行编译时和运行时阶段总是一个很好的做法,无论是从IDE还是Tomcat使用。还请确保使用与您用于运行测试用例的相同版本的JRE(如果有)

我的问题是:我是否总是需要使用与运行tomcat的java版本完全相同的JDK版本进行编译?

如果在较低版本上编译代码并在较高版本上运行,有时您可能会逃脱这个问题,但如果可能的话,您应该避免这种情况。因此,尝试使用IDE的相同JDK版本进行编译,使用Tomcat的相同JRE版本部署项目。

 类似资料:

相关问答

相关文章

相关阅读