2015-03-20 3 views
5

Я хочу отладить webapp в eclipse. Я дошел до того, что tomcat и webapp запускаются внутри eclipse в режиме отладки, но тогда точки останова в коде webapp не имеют никакого эффекта.Запустите tomcat7: запустите плагин maven в eclipse и отлаживайте

Подробности
веб-приложение является Maven артефакт, и я использую плагин m2e в затмении, чтобы соединить между мавена и затмения.

Мне удалось запустить сервер tomcat из затмения. WebApp начинается в котом красиво, а также в режиме отладки, если я выбираю так:

  • в затмении, щелкните правой кнопкой мыши проект
  • Run As> Maven построить ... (НЕ «Maven построить»)
  • открывается окно. В текстовом поле «Цели», введите «tomcat7: запуск»
  • нажмите Применить
  • выберите пункт Выполнить

сервер Tomcat запускается и работает его stdlog печатается в окно в затмении. Я также могу остановить его удобно и запустить его снова в режиме отладки. Пока что это то, чего я хочу и чего я ожидаю.

Проблема
я поставил точку останова в коде моего веб-приложение и перезапустить Tomcat в режиме отладки внутри затмения. Теперь точка останова неактивна: у нее нет такой небольшой отметки, которая имеет активные точки останова, и я знаю, что код выполнен, но он не останавливается на точке останова.

+0

Я знаю, что могу настроить удаленную отладку в maven, а затем запустить tomcat7 в maven и подключиться к нему с помощью удаленной отладки eclipse. Но тогда мне нужно управлять стартом и останавливать две вещи отдельно, и я не увижу вывод журнала tomcat в исключениях затмения для включения в клик. Мне нужны оба этих преимущества. Если все работает по-другому, я тоже в порядке. –

+0

Почему вы не используете экземпляр сервера Tomcat внутри Eclipse вместо того, чтобы полагаться на плагин Maven? – watery

+0

@ watery Я мог бы и я, если мой другой способ не сработает. Основная причина в том, что плагин maven имеет одну конфигурацию, и если что-то там изменится, я автоматически изменю это изменение при запуске tomcat через плагин maven. Если у меня есть сервер tomcat, настроенный в eclipse, тогда изменение конфигурации из maven не будет иметь эффекта в моем затмении. Таким образом, если я это сделаю, я могу запустить tomcat по-другому по сравнению с тем, как мои участники команды запускают его, поэтому в какой-то момент мы можем столкнуться с различными наборами проблем, что приводит к трудностям в описании описаний каждой из них. –

ответ

2

Это может быть два способа исправить, и вам понадобится один или оба из них. Откройте конфигурацию запуска, а затем

Проблема + Решение 1 (вилка)
Если кот разветвляется в другой виртуальной машине, то вам необходимо добавить параметр forkMode со значением никогда. Это позволяет eclipse «смотреть» на VM Tomcat и устанавливать там точки останова.

Проблема + Решение 2 (источник)
В некоторых установках с Maven родительских и дочерних артефактов, это может случиться, что затмение не знает о том, что источником некоторых детского проекта относятся к вашему веб-приложение. Симптомом этого является то, что выполнение останавливается в точке останова, но затмение автоматически не переходит в исходное местоположение и вместо этого сообщает вам, что источник неизвестен.
Чтобы решить эту проблему, вам необходимо добавить источник дочернего проекта в конфигурацию запуска. В конфигурации запуска перейдите в раздел «Источник»> «Добавить ...»> «Проект Java» и выберите все соответствующие проекты, которые содержат исходный код, который вы, возможно, захотите отлаживать.

0

Перейдите в режим отладки eclipse, проверьте флажок в позиции точки разрыва для точки разрыва, если флажок установлен.

0

вы можете запустить Tomcat с мавенно с этой командой:

mvn tomcat7:run

и если вы хотите отлаживать, установите этот Maven опцию:

export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

, если вы находитесь в окне, используйте команду set:

set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

, тогда вы можете отлаживать с помощью Eclipse's Remote Java Application.

Надеюсь, что эта помощь.

+0

Все, что вы написали, было раньше известно; см. комментарии к вопросу. Более того, в комментариях говорится, что это решение не является идеальным и объясняется, почему. Таким образом, вы просто дублируете информацию, которая находится на этой странице, и которая не является полезной. Более того, уже есть лучшее решение, чем ваше. извините за разрушительный комментарий, но я думаю, что стоит отметить. –

Смежные вопросы