@Jek_Rock
Java developer

Как передать Java 9 Options в Tomcat 9?

Как передать в Tomcat 9 Java Options для Java 9+ (такие как --add-exports, -add-reads и т.д.) если Tomcat запущен как Windows сервис?
Судя по документации, можно передавать только -X и -D параметры, но как передать все остальное? Если передавать параметры как есть (например --add-reads), то Tomcat не стартует из-за того, что не распознает параметры.
Добавление Java Options в catalina.bat и setenv.bat не работает, так как похоже эти скрипты не вызываются, когда Tomcat запускается как сервис.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@Jek_Rock Автор вопроса
Java developer
Сам спросил сам и отвечу)
Не смотря на то, что написано в документации, параметром --JvmOptions9 можно передавать опции типа "--add-reads". Но Tomcat не полность поддерживает формат опций Java 9. Например, он понимает "--add-opens=java.desktop/java.awt=ALL-UNNAMED", но не стартует с "--add-opens java.desktop/java.awt=ALL-UNNAMED" (с пробелом вместо "=")

Ну и в дополнение напишу несколько моментов, из-за которых Tomcat сервис на Java 9+ под Windows тоже может не стартовать:
  • Java options для Java 9+ нужно указывать в определенном порядке.
    Например, сначала должен быть module-path, потом add-modules, дальше patch-module (если нужен) а потом уже все остальное. При этом, если запускать без Tomcat или с ним но не как сервис, то порядок не важен
  • Проверяйте нет ли пробела после каждой опции.
    Например, если написать "--add-reads=java.desktop=ALL-UNNAMED " (с пробелом вконце), то JVM вам выдаст "Unknown module: ALL-UNNAMED specified to --add-reads" и вы будете долго искать что же не так с "ALL-UNNAMED"
  • Не забывайте, что для Tomcat ";" является разделителем параметров.
    Когда передаете несколько параметров в classpath через ";" этот символ нужно экранировать одинарными кавычками "';'"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы