Tomcat 7 С Java 8 на Windows и Linux

У меня возникла следующая проблема:

Я хочу использовать Java-сервлет, построенный на целевой Java-8 с Apache Tomcat 7.0.54.

когда я запускаю его на своей локальной машине (Win-64, JDK build 1.8.0-b132), он работает отлично.

но когда я развертываю его на производстве (Debian GNU/Linux 7.5 (wheezy), JDK build 1.8.0-b132, Tomcat 7.0.54-2), он бросает:

Unsupported major.minor version 52.0 (unable to load class ru.tomtrix.fvds.servlets.ItemServlet)

... это означает неподдерживаемые классы Java-8. Итак, что происходит не так с экземплярами Windows и Linux то же самое версия Tomcat?

3 ответов


спасибо всем, я нашел, что произошло. Оказалось, что переменной JAVA_HOME не был определен надлежащим образом (в качестве выхода и Марко Topolnik упомянул). Я открыл /и т. д./По умолчанию/tomcat7 и изменил этот раздел:

# The home directory of the Java development kit (JDK). You need at least
# JDK version 6. If JAVA_HOME is not set, some common directories for
# OpenJDK, the Oracle JDK, and various Java SE 6+ versions are tried.
#JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk
JAVA_HOME=/path/to/my/jdk

... и все начинает работать! Действительно ли Tomcat использует внутренний JDK smth как OpenJDK по умолчанию?


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

  1. для установки другого JDK для каждого экземпляра TOMCAT:

catalina.sh звонки setenv.sh для использования JDK. Создать файл setenv.sh в CATALINA_BASE / bin, если не существует. CATALINA_BASE означает папку Tomcat. Открыть setenv.sh с gedit:

sudo gedit setenv.sh

пишите эта строка:

export JAVA_HOME=/path/to/your/JDK

Tomcat рекомендует экспортировать JAVA_HOME в setenv.sh, не в catalina.sh.

  1. для изменения JDK по умолчанию на Ubuntu:

    sudo update-альтернативы --install/your/path/to/JDK/bin / java

или:

sudo update-alternative --install  ${JAVA_HOME}/bin/java

Если вы определили JAVA_HOME.


переменная среды JAVA_HOME не имеет отношения к тому, как Eclipse будет запускать код. Аналогично, параметры компилятора, показанные для проекта, не влияют на то, как выполняется код.

вместо этого вам нужно посмотреть на конфигурацию запуска, которую вы используете, и проверить среду там. Убедитесь, что вы используете Java 8, и все должно быть хорошо. Нажмите на треугольник рядом с кнопкой выполнить и выберите "Выполнить конфигурации"..."чтобы открыть диалог со всеми настройками. Затем посмотрите на вкладку JRE, и убедитесь, что вы используете правильный JRE.