Вопрос или проблема
Я установил Tomcat 11.0.0-M6 и получаю это сообщение об ошибке каждый раз, когда пытаюсь его запустить в первый раз:
Ошибка: LinkageError возникла при загрузке основного класса org.apache.catalina.startup.Bootstrap
java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap был скомпилирован более новой версией Java Runtime (версия файла класса 61.0), эта версия Java Runtime распознает только версии файлов класса до 55.0
Я проверил версию Java, выполнив java -version
, и получил, что это версия 11, соответствующая версии файла класса 55, как требует Tomcat:
java version "11.0.12" 2021-07-20 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.12+8-LTS-237) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.12+8-LTS-237, mixed mode)
Затем я выполнил update-alternatives --display java
и получил:
java - ручной режим
лучшая версия - это /opt/jdk/jdk-11.0.12/bin/java
сейчас ссылка указывает на /opt/jdk/jdk-11.0.12/bin/java
ссылка java - это /usr/bin/java
/opt/jdk/jdk-11.0.12/bin/java - приоритет 100
/opt/jdk/jdk-17.0.7/bin/java - приоритет 100
/opt/jdk/jdk1.8.0_301/bin/java - приоритет 100
И мы видим, что используется Java 11, а не Java 17
Файл tomcat.service:
[Unit]
Description="Tomcat Service"
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
RestartSec=10
Restart=always
Environment="JAVA_HOME=/opt/jdk/jdk-11.0.12"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
[Service]
Environment="CATALINA_OPTS=-Djava.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu:/usr/lib64:/lib64:/lib:/usr/lib"
Есть у кого-нибудь идеи, что вызвало ошибку?
Спасибо за помощь
Ответ или решение
Уважаемый пользователь,
Ошибка, которую вы получили при попытке запустить Apache Tomcat 11, связана с несовместимостью между вашей версией Java Runtime Environment (JRE) и версией, в которой был скомпилирован Tomcat. Конкретно, версия классового файла 61.0 соответствует Java 17, тогда как ваша система использует Java 11, что соответствует классовой версии 55.0.
Проблема
Ошибка java.lang.UnsupportedClassVersionError
указывает на то, что классы, используемые Tomcat, скомпилированы с использованием более новой версии JDK, чем та, которая установлена в вашей системе. В результатах команды java -version
видно, что установлена Java версии 11.0.12, что несовместимо с требуемым уровнем для Tomcat 11, которая ожидает Java 17.
Решение
Обновление Java Runtime
-
Установка JDK 17: Вам необходимо установить Java Development Kit (JDK) версии 17. Убедитесь, что JDK 17 установлен на вашем сервере.
-
Настройка
update-alternatives
: После установки JDK 17, используйте командуupdate-alternatives
для определения JDK 17 в качестве стандартной версии Java для системы.sudo update-alternatives --config java
Выберите путь, указывающий на JDK 17.
-
Изменение переменной JAVA_HOME: Обновите ваш файл службы Tomcat. Убедитесь, что в разделе
[Service]
переменнаяJAVA_HOME
указывает на путь установки JDK 17:Environment="JAVA_HOME=/opt/jdk/jdk-17.0.x"
-
Перезагрузка службы Tomcat: После внесения изменений перезапустите службу Tomcat для применения настроек:
sudo systemctl daemon-reload sudo systemctl restart tomcat
Проверка
После выполнения вышеуказанных шагов запустите java -version
для проверки текущей версии Java. Она должна соответствовать Java 17:
java version "17.0.x"
Java(TM) SE Runtime Environment (build 17.0.x+...)
Заключение
Ошибка была вызвана несовместимостью версий Java и Tomcat. Установка более новой версии Java решит вашу проблему, позволив успешно запустить Tomcat 11. Надеюсь, эта информация поможет вам устранить возникшие затруднения и обеспечить стабильную работу сервера.
С уважением,
Ваш IT-эксперт