tomcat UnsupportedClassVersionError
tomcat UnsupportedClassVersionError
我在 Mac 上安装了 bitnami Tomcat 7 (apache + tomcat + mysql),使用 java 1.7 76。
我的 Mac 使用 java 1.8 运行 时间。
当我将我的项目(在同一 Mac 上用 intellij 制作)部署到 tomcat 并尝试 运行 时,我得到一个 UnsupportedClassVersionError。我使用哪个版本的 JDK 来编译项目(我已经尝试过 apple 1.6、oracle 1.7 和 oracle 1.8 版本)并不重要,而且我设置的语言级别似乎也不重要。
获取应用程序 运行ning 的唯一方法是使用语言级别 1.3(使用 JDK 1.7 of 1.8)
为了解决这个问题,我现在在 Mac 上安装的 1.8 JDK 上将 tomcat 设置为 运行,然后我将 intellij 配置为使用相同的 JDK。
现在一切正常。
我的问题:我是否总是需要使用与 运行 和 tomcat 的 java 版本完全相同的 JDK 版本进行编译?还是我做错了什么。
完整错误:(有时还会显示UnsupportedClassVersionError: minor version)
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.
在编译时和 运行 时间阶段使用一个版本的 JDK 和 JRE 始终是一个好习惯,无论是从 IDE 还是 Tomcat 开始使用。还要确保使用与 运行ning 测试用例(如果有)和 tomcat 相同的 JRE 版本,以避免 运行ning 出现此类问题。
My question: Do I always need to compile using the exact same version
of the JDK as the java version that runs tomcat?
如果您在较低版本上编译代码并在较高版本上 运行 编译代码,有时您可能会遇到此问题,但您应该尽可能避免这种情况。因此,请尝试使用来自 IDE 的相同 JDK 版本进行编译,并使用来自 Tomcat 的相同版本的 JRE 来部署您的项目。
我在 Mac 上安装了 bitnami Tomcat 7 (apache + tomcat + mysql),使用 java 1.7 76。 我的 Mac 使用 java 1.8 运行 时间。 当我将我的项目(在同一 Mac 上用 intellij 制作)部署到 tomcat 并尝试 运行 时,我得到一个 UnsupportedClassVersionError。我使用哪个版本的 JDK 来编译项目(我已经尝试过 apple 1.6、oracle 1.7 和 oracle 1.8 版本)并不重要,而且我设置的语言级别似乎也不重要。 获取应用程序 运行ning 的唯一方法是使用语言级别 1.3(使用 JDK 1.7 of 1.8)
为了解决这个问题,我现在在 Mac 上安装的 1.8 JDK 上将 tomcat 设置为 运行,然后我将 intellij 配置为使用相同的 JDK。 现在一切正常。
我的问题:我是否总是需要使用与 运行 和 tomcat 的 java 版本完全相同的 JDK 版本进行编译?还是我做错了什么。
完整错误:(有时还会显示UnsupportedClassVersionError: minor version)
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.
在编译时和 运行 时间阶段使用一个版本的 JDK 和 JRE 始终是一个好习惯,无论是从 IDE 还是 Tomcat 开始使用。还要确保使用与 运行ning 测试用例(如果有)和 tomcat 相同的 JRE 版本,以避免 运行ning 出现此类问题。
My question: Do I always need to compile using the exact same version of the JDK as the java version that runs tomcat?
如果您在较低版本上编译代码并在较高版本上 运行 编译代码,有时您可能会遇到此问题,但您应该尽可能避免这种情况。因此,请尝试使用来自 IDE 的相同 JDK 版本进行编译,并使用来自 Tomcat 的相同版本的 JRE 来部署您的项目。