У меня есть bitnami Tomcat 7 (apache + tomcat + mysql) на моем Mac, с использованием java 1.7 76. Мой Mac использует java 1.8 runtime. Когда я развертываю свой проект (сделанный в intellij на том же Mac) в tomcat и пытаюсь запустить его, я получаю UnsupportedClassVersionError. Неважно, какую версию JDK я использую для компиляции проекта (я пробовал версии 1.6, oracle 1.7 и oracle 1.8), и, похоже, не имеет значения, какой языковой уровень я задал. Единственный способ запуска приложения - использовать уровень 1.3 (с использованием JDK 1.7 из 1.8)tomcat UnsupportedClassVersionError
Чтобы устранить проблему, я установил tomcat для запуска на 1.8 JDK, установленном на моем Mac, после чего я настроил intellij на используйте тот же JDK. Теперь все работает отлично.
Мой вопрос: Всегда ли нужно компилировать, используя ту же самую версию JDK, что и java-версия, которая запускает tomcat? Или я делаю что-то неправильно.
Полная ошибка: (иногда также показывает UnsupportedClassVersionError: младшая версия)
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.
Приятно знать, что мое текущее решение является правильным. Спасибо за ваше объяснение. – projectIncomplete
Если это так, вы можете пометить его разрешенным тогда. –
Некоторые дополнительные указатели. Обратите внимание, что это также относится ко всем используемым библиотекам: иметь встроенную банку на Java8 и запускать ее на Java7, может создать такую же проблему - не только ваши пользовательский код. Кроме того, если ваш tomcat использовался для запуска на Java8, а затем вы меняете его на Java7, он уже скомпилировал JSP-файлы с Java8. –