Я знаю, что в StackOverflow есть много вопросов, которые обеспечивают решение этой проблемы (и я пришел сюда, следуя этим решениям), но я все еще застрял. Приложение работает нормально на моей машине, но я не могу это сделать работайте на сервере Ubuntu. Вот что я сделал для решения этой проблемы:
Unsupported major.minor version 52.0
означает, что существует конфликт с версией Java. Я исправил это, установив Java 1.8 на моем сервере Ubuntu и сделав его Java по умолчанию.java -version
и javac -version
равны 1.80_40
на сервере Ubuntu и 1.8.0_31
на моем локальном компьютере.$JAVA_HOME
на сервере Ubuntu равен /usr/lib/jvm/java-8-oracle/
Вот ошибки, которые я получаю после развертывания моего WAR файла:
java.lang.UnsupportedClassVersionError: com/appname/servlets/getServlet: Unsupported major.minor version 52.0 (unable to load class com.appname.servlets.getServlet)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
Изменение: Пожалуйста, не помещайте его как дубликат. Я чувствую, что моя проблема - это что-то другое, потому что я знаю, что она скомпилирована и работает на тех же версиях (Java 1.8).
Несмотря на то, что как java -version
и javac -version
отображались как 1,8 на моем сервере Ubuntu, я заметил, что по какой-то причине Tomcat по-прежнему использовал 1,7, когда я посетил его графический интерфейс менеджера (внизу).
Эта проблема была устранена с помощью этого вопроса на Ask Ubuntu. В принципе, JAVA_HOME
необходимо обновить для Tomcat, используя vi/etc/default/tomcat7
. Я установил мой в /usr/lib/jvm/java-8-oracle
, перезапустил Tomcat, и теперь он показывает правильную версию в Tomcat.