Tomcat7 запускается с неверной версией Java

1

Я знаю, что в StackOverflow есть много вопросов, которые обеспечивают решение этой проблемы (и я пришел сюда, следуя этим решениям), но я все еще застрял. Приложение работает нормально на моей машине, но я не могу это сделать работайте на сервере Ubuntu. Вот что я сделал для решения этой проблемы:

  1. Я понимаю, что Unsupported major.minor version 52.0 означает, что существует конфликт с версией Java. Я исправил это, установив Java 1.8 на моем сервере Ubuntu и сделав его Java по умолчанию.
  2. Мои java -version и javac -version равны 1.80_40 на сервере Ubuntu и 1.8.0_31 на моем локальном компьютере.
  3. Мой путь $JAVA_HOME на сервере Ubuntu равен /usr/lib/jvm/java-8-oracle/
  4. После этого я перезапустил Tomcat и Postgres (не это важно?)

Вот ошибки, которые я получаю после развертывания моего 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).

  • 0
    как у вас работает приложение? у вас установлены старые версии java на вашем сервере? Вы уверены, что эти приложения не используют более старые версии Java (может быть, кто-то жестко запрограммировал их в некоторых сценариях запуска?)
  • 0
    @MateuszDymczyk - Когда я щелкаю правой кнопкой мыши имя_проекта> Свойства в NetBeans, я вижу, что Java-платформой является JDK 1.8 на вкладке Библиотеки. На вкладке Источники я вижу исходный / двоичный формат как JDK 8.
Показать ещё 11 комментариев
Теги:

1 ответ

0
Лучший ответ

Несмотря на то, что как 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню