Как запустить Apache Tomcat 8 в режиме отладки?

Я пытаюсь запустить Apache Tomcat 8.0.21 в режиме отладки.

Когда я даю команду

sh catalina.sh jpda start

это дает эту ошибку.

сообщение об ошибке

ОШИБКА: Невозможно загрузить этот агент TI JVM дважды, проверьте в командной строке Java наличие дубликатов параметров jdwp. Произошла ошибка во время инициализации библиотеки агента VM: не удалось инициализировать: jdwp

Кто-нибудь может помочь?

5 ответов

Или

unset CATALINA_OPTS
unset JPDA_ADDRESS
unset JPDA_OPTS
unset JPDA_TRANSPORT

catalina.sh jpda start

Или же

# in .bashrc, .profile etc.
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -Djava.security.egd=file:/dev/urandom -Denv=dev -Xms1024M -Xmx2048M -XX:PermSize=256M -XX:MaxPermSize=768m"

# At your shell prompt
./startup.sh

объяснение

Как сказал Арнаб в комментариях, если ваша конфигурация оболочки включает переменные окружения с упоминанием jdpw (например, CATALINA_OPTS, JDPA_ADDRESS, JPDA_OPTS), просто запустите используя ./startup.sh как если бы вы не пытались выполнить удаленную отладку, и скрипт выберет опцию jdpw из ваших переменных среды.

Синтаксис параметров запуска catalina.sh jpda start следует использовать, только если у вас нет переменных среды, которые уже указали удаленный порт отладки. Это должно быть удобно, но если вы ранее настроили свою оболочку для поддержки удаленной отладки Java, вы, вероятно, смешиваете два альтернативных подхода.

Вы можете просто добавить переменную env и запустить tomcat как обычно

Порт отладки в этом случае 8000

export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Затем запустите кот

sh ./catalina.sh start

Существует альтернативный подход, рекомендуемый в 'catalina.sh':

"Не устанавливайте переменные в этом скрипте. Вместо этого поместите их в скрипт setenv.sh в CATALINA_BASE/bin, чтобы сохранить ваши настройки отдельно".

Для Windows имя файла с переменными среды будет "setenv.bat".

Это случилось со мной в Eclipse, когда я попытался добавить параметры отладки (-Xdebug -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y), чтобы я мог приостановить Tomcat при запуске. К сожалению, я затем запустил свой Tomcat (в Eclipse), используя кнопку Debug.

Почему это проблема
Когда вы запускаете Tomcat в режиме отладки, Eclipse сам вставляет параметры отладки. Когда у вас есть собственные параметры отладки в конфигурации запуска, вы действительно передаете их дважды.

Поэтому, если вам нужно запустить Tomcat из Eclipse и приостановить его при запуске (чтобы вы могли подключиться к отладчику), вам необходимо:
- добавьте параметры отладки в поле "Аргументы -> Аргументы VM" вашей конфигурации запуска,
- и затем запустите этот конфиг, а не отладку.
Таким образом, добавляются только параметры отладки из вашей конфигурации запуска.

Спасибо, мистер Димитар II.
Подтверждено, что это работает отлично и автоматически используется при запуске
файла startup.bat: setenv.bat

      @echo off
rem The proper way to set environment up for running Catalina
set "CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
Другие вопросы по тегам