Как отлаживать Groovy-код с помощью удаленной отладки Java-приложений в Eclipse - PullRequest
4 голосов
/ 05 марта 2012

Я изо всех сил пытаюсь отладить приложение, которое собирается как комплект Sling. Приложение является почти полностью Groovy-кодом (у меня есть плагин Groovy Eclipse), и Eclipse (использующий Maven) собирает .jar и без проблем устанавливает его в Sling.

Однако отладка невозможна. Я выполнил инструкции по настройке удаленной отладки, которые, как я понимаю, необходимы для отладки приложений Sling - в частности, я запускаю Sling с помощью следующей команды:

java -Xdebug -Xnoagent -Djava.io.tmpdir=/c/Users/nickgolding1/temp -Xmx1024m -Xrunjdwp:transport=dt_socket,address=30303,server=y,suspend=n -jar org.apache.sling.launchpad-6-SNAPSHOT-standalone.jar -p 8080

... и затем настройте конфигурацию отладки в Eclipse, типа «Удаленное приложение Java», указывая на мой проект, Тип подключения «Стандарт (Socket Attach)», хост localhost, порт 30303. Эта конфигурация запускается хорошо - по крайней мере, я не получаю никаких отзывов, предполагающих, что это не так - но точки останова, которые я установил в коде Groovy, на самом деле не нарушают выполнение запросов к приложению Sling.

Я видел несколько постов на различных форумах, в которых рассказывается о людях, испытывающих проблемы с отладкой кода Groovy через конфигурацию приложения Remote Java, где у них нет проблем с кодом Java. К сожалению, мое приложение работает на Groovy и не имеет языка Java, поэтому я не могу проверить, что это именно тот случай.

Любые мысли приветствуются!

1 Ответ

3 голосов
/ 05 марта 2012

Во-первых, предложение. Установите suspend=y в вашем транспортном параметре Xrunjdwp :. Это приостановит работу в основном и даст вам лучшее представление о том, связана ли ваша проблема с параметрами отладки или с кодом Groovy.

Теперь перейдем к чему-то более сложному. Да. Есть некоторые проблемы, связанные с отладкой удаленного кода Groovy. Проблема обычно возникает, когда Groovy-код загружается динамически. В этом случае имя отладки часто не совпадает с именем источника, а отладчик не знает, как сопоставить динамически загруженный файл класса с исходным исходным кодом.

Одна из таких проблем описана здесь (и, несомненно, есть другие места, где происходят подобные вещи): https://jira.springsource.org/browse/SPR-7113

Итак, я предлагаю вам, чтобы, если возможно, вы должны были убедиться, что ваш код groovy предварительно скомпилирован перед отправкой на сервер. (А также установить suspend=y.)

...