Отладка программы Java, выполнив "gradle run"

У меня есть проект Gradle в Eclipse IDE, и я обычно использую опцию gradle run для запуска моего приложения Java.

У меня есть ошибка в моем Java-коде, и я хочу ее отладить, но когда я выполняю gradle run, отладчик не останавливается в контрольных точках. В меню "Отладка как" у меня нет ничего подобного gradle debug.

Как отлаживать приложение?

Ответ 1

Чтобы отладить проект Gradle в Eclipse, выполните следующие действия:

Шаг 1:
Поместите это в файл build.gradle:

tasks.withType(JavaExec) {
    if (System.getProperty('DEBUG', 'false') == 'true') {
        jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9099'
    }
}

Шаг 2:

Из корня вашего проекта запустите:

gradle -DDEBUG=true run

Теперь вы увидите что-то вроде этого в консоли:

Listening for transport dt_socket at address: 9099

Шаг 3:

Теперь установите точки останова в Eclipse в ваших исходных файлах.

Шаг 4:

В качестве последнего шага, теперь щелкните правой кнопкой мыши в Eclipse в Project> Debug as> Debug configuration> Remote Java application.

Там вы должны установить эти поля:

1. Project (this should be set to name of your Eclipse project)
2. Host (here it localhost)
3. Port (in this example it will be 9099)

Нажмите "Отладка". Теперь ваша программа будет останавливаться всякий раз, когда она достигает точки останова в Eclipse.

Чтобы увидеть подробности этих шагов с примером проекта, посмотрите следующий пример на GitHub:

Ответ 2

Несмотря на то, что принятый ответ должен работать, вы можете достичь его гораздо проще.


  1. Просто запустите gradle run --debug-jvm. Это запускает приложение в режиме удаленной отладки, и вы можете подключиться к любому удаленному отладчику, например, Eclipse, к порту 5005.

  2. Предполагая, что вы используете Eclipse в качестве IDE: в Eclipse перейдите к своему проекту → Debug as... → Debug Configuration → Remote Java Application. В качестве хоста установите localhost, как порт 5005, и вы можете свободно идти.


Для получения дополнительной информации см. Официальный документ плагина Gradle Java относительно тестирования.

[...] также может быть включено во время вызова через опцию задачи --debug-jvm (начиная с версии 1.12).

Ответ 3

Если вы ищете ответ для отладки своего веб-приложения, построенного на Spring Boot - Gradle.., то вот как я отлаживал

Step 1: build gradle peoject 
> gradle build

Step 2: From command prompt 
> C:\my jar or war file is in this folder>java -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y -jar myJarOrWarApplication-1.0.0.war

Step 3: Go to eclipse --> right click on your project --> Debug as --> Debug configurations --> Remote Java Application --> Create new configuration --> change port to 9999 -->hit Debug button

Step 4: Place debug points in your code in eclipse.
Step 5: Call your application.  

Ответ 4

Я не смог запустить задачу gradle в режиме отладки, добавив следующий код в файл build.gradle.

tasks.withType(JavaExec) {
    if (System.getProperty('DEBUG', 'false') == 'true') {
        jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
    }
}

Вместо этого я сделал следующие шаги и сумел запустить его автоматически в режиме отладки:

  1. Все, что вам нужно сделать, это перейти в $ GRADLE_HOME/bin.
  2. Отредактируйте файл gradle или gradle.bat в зависимости от вашей ОС.
  3. Установите параметр JVM в зависимости от ОС. Например:

случай gradle (UNIX):

DEFAULT_JVM_OPTS="-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

случай gradle.bat(NT):

set DEFAULT_JVM_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

4. Запустите команду Gradle из консоли.