Ответ 1
Вы можете проверить, работает ли это?
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
catalina.sh jpda start
Я не могу отлаживать приложение tomcat через Eclipse. Я установил
CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
а затем я запустил bin/catalina.sh
, где я вижу вывод, говорящий, что он прослушивает dt_socket
на port 8000
. Но всякий раз, когда я пытаюсь подключиться к порту 8000
в Eclipse (добавив запись в меню удаленного java-приложения), он жалуется на отказ от соединения. Любые идеи?
Вы можете проверить, работает ли это?
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
catalina.sh jpda start
Я потратил некоторое время на это, чтобы получить правильную информацию.
Итак, вот подробная информация шаг за шагом.
Среда: Windows 7
Версия TomCat: 7.0
IDE: Eclipse
Конфигурации, которые нужно добавить для включения удаленной отладки в tomcat, это
-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
Я не рекомендую эту конфигурацию для среды без окон.
Чтобы добавить вышеуказанную конфигурацию, дважды щелкните на сервере tomcat, который будет доступен на сервере. Найдите снимок экрана ниже.
Теперь добавьте указанную выше конфигурацию среды выполнения в tomcat. Для этой проверки снимок экрана.
Теперь перейдите на вкладку "Ремиксы" в разделе "Свойства запуска запуска редактирования", как показано ниже.
Раздел аргументов GoTo VM добавляет эти строки.
-Xdebug
-agentlib: JDWP = = транспорт транспорт по сокетам, адрес = 8000, сервер = у, приостановить = п
Теперь появилась кнопка отладки, доступная на панели инструментов eclipse.
В конфигурациях Debug найдите "Remote Java Application" и дважды щелкните по нему.
В поле "Имя" введите любое имя, которое вам нравится.
Из поля проекта с помощью кнопки обзора выберите проект, который вы хотите выполнить удаленную отладку.
Имя хоста - это только адрес хоста. Здесь я работаю локально, так что это "localhost".
В последнем столбце Port значение должно быть 8000. Помимо текстовых полей Name и Project другие два столбца Host и порт будут заполнены самим eclipse, если вы не указали те же значения, что и упомянутые. Проверьте снимок экрана для информации.
Теперь щелкните правой кнопкой мыши на TomcatServer в консоли сервера, выберите "Добавить и удалить из контекстного меню". В этом диалоговом окне вы можете добавить проект на сервер.
Теперь запустите Tomcat sever.
Теперь запустите TomCatDebugConfiguration из инструмента Debug.
Последний открытый внутренний или внешний браузер и запуск вашего проекта. Если управление выполнением достигло точек разрыва, то затмение будет запрашивать перспективы отладки.
В каталоге bin tomcat, где найдены catalina.bat
или .sh
(aka {CATALINA_BASE}/bin), отредактируйте (создайте, если не там):
setenv.bat/.sh
Добавьте следующую строку:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Чтобы все, что вам нужно сделать, вам не нужно редактировать файл catalina.bat
(или .sh
).
См. комментарии в catalina.bat
или catalina.sh
.
Возможно, вам придется настроить синтаксис для конкретной среды/ситуации. Например, если у вас уже определено CATALINA_OPTS, вы можете сделать что-то вроде этого (в среде Windows):
set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n
Отладка с Eclipse:
run- > Конфигурации отладки...- > Удаленное приложение Java- > Новое
и укажите имя, проект, который вы отлаживаете, и порт хоста и отладки tomcat, указанный выше.
В файле catalina.bat
пожалуйста, измените ниже.
Шаг 1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Шаг 2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
Шаг 3. Запустите Tomcat из командной строки, как catalina.sh jpda start
ниже: catalina.sh jpda start
Шаг 4: Затем в eclipse создайте конфигурацию отладки
project name
.Standard(Socket Attach)
localhost
8000
(или любой номер порта, но он должен быть таким же и в других местах).Позвольте мне поделиться простым способом включения удаленного режима отладки в tomcat7 с помощью eclipse (Windows).
Шаг 1: открыть файл bin/startup.bat
Шаг 2: добавьте ниже строки для отладки с опцией JDPA (она должна начинаться с строки)
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
Шаг 3: в том же файле.. перейти к концу файла изменить эту строку -
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
instead of line
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
шаг 4: тогда просто запустите bin > startup.bat(так что теперь ваш сервер tomcat работал в удаленном режиме с портом 8000).
Шаг 5: после этого можно подключить исходный проект с помощью eclipse IDE с удаленным клиентом.
step6: В Eclipse IDE перейдите в раздел "Конфигурация отладки"
step7: нажмите "удаленное приложение Java" и нажмите "Новый"
step8. на вкладке "connect" установите значение параметра
project= your source project
connection Type: standard (socket attached)
host: localhost
port:8000
step9: нажмите применить и отладить.
наконец, ваш удаленный клиент eclipse будет связан с работающим сервером tomcat (режим отладки).
Надеюсь, что этот подход может помочь вам.
С уважением..
Измените параметр catalina.bat, чтобы добавить
set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
и
CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
Дополнительно: добавьте строку ниже, чтобы запустить режим отладки по умолчанию при запуске startup.bat
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
Eclipse или STS выберите конфигурацию отладки правой кнопкой мыши → новый
connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address
Просто запустите ./catalina.sh jpda start
(forks) или ./catalina.sh jpda run
(не fork, не упомянутый в справке). Все параметры, упомянутые здесь, по умолчанию соответствуют нормальным значениям.
Если все вышеперечисленное не работает, вы всегда можете добавить к script
set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
В tomcat 7, catalina.sh имеет этот код:
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift
fi
Ii подразумевает, что вы можете настроить JPDA с помощью:
export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n
Или с помощью:
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
И, наконец, используйте:
catalina.sh jpda start
Привет
Я столкнулся с этой проблемой во время запуска Tomcat внутри контейнера Docker. Чтобы исправить это, убедитесь, что вы добавили аргумент -p 8000: 8000 'в команду запуска docker, чтобы открыть этот порт на вашем локальном компьютере. Конечно, вам понадобится файл setenv.sh в вашем $ {CATALINA_HOME}/bin/в вашем контейнере.
Многие из приведенных выше ответов верны, но помните, что по умолчанию отладчик будет прослушивать только локальный хост. Если вы отлаживаете удаленный сервер, вам нужно указать IP-адрес для прослушивания, например
JPDA_OPTS = "-agentlib: jdwp = transport = dt_socket, address = 10.1.1.33: 8000, server = y, suspend = n"
catalina.sh jpda начало
Обратите внимание, что адрес теперь 10.1.1.33: 8000
Конечно, вы также можете проверить, какой IP на самом деле используется, запустив
нетстат -an
в Windows и Linux и отфильтруйте порт с помощью команды find (Win) или grep (Linux).
Модификация startup.bat с CATALINA_OPTS и JPDA_OPTS не сработала для меня, но добавила их в catalina.bat.
CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, suspend = n"
JPDA_OPTS = "- agentlib: JDWP = транспорт = транспорт по сокетам, адрес = 8000, сервер = у, подвесьте = п"
изменить вызов "% EXECUTABLE%" start% CMD_LINE_ARGS% до
вызов "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%
Затем настройте удаленное приложение java в своих конфигурациях отладки в Eclipse.
Прежде всего, если вы откроете файл catalina.bat с помощью текстового редактора, вы увидите следующее: "Не устанавливайте переменные в этом script....." Поэтому никогда не изменяйте его в этом script, вместо этого вы можете сделать следующие шаги:
Затем установите 2 переменных в файле bat, например:
установить CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, suspend = n"
установить JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 8000, server = y, suspend = n"
Наконец, запустите на cmd, что: "catalina.bat jpda start"
В среде IDE создайте удаленную конфигурацию отладки и установите для хоста соответствующий ip и порт сервера на 8000.
Для версии apache-tomcat-8.5.28 просто сделайте это,
catalina.bat jpda start
Поскольку настройки по умолчанию уже настроены для нас в catalina.bat как
если не "% JPDA_OPTS%" == "" goto gotJpdaOpts установлено JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, address =% JPDA_ADDRESS%, server = y, suspend =% JPDA_SUSPEND%
Так что не нужно никакой другой конфигурации. И когда вы запускаете команду catalina.bat jpda start, вы можете увидеть отладочный порт 8000.
Посмотрите этот ответ для проблем, которые у меня были с Java 8 и Tomcat 9: удаленная отладка Java (JPDA) не работает для меня в Tomcat 9
Это похоже на предупреждение @DAB, и его решение, вероятно, более безопасно.
Для apache-tomcat-8.5.28
измените JDPA_OPTS
как JDPA_OPTS
ниже, затем запустите, как catalina.bat jpda start
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"