Как отладить приложение Spring Boot с помощью Eclipse?


мой Spring Boot webapp работает просто отлично, и я хотел бы отладить его через Eclipse.

Итак, при запуске моего удаленного отладчика приложений Java, какой порт я должен слушать? И есть ли параметр в моем веб-приложении, который я должен установить, чтобы включить отладку?

11 73

11 ответов:

почему бы вам просто не щелкнуть правой кнопкой мыши на main() способ и выберите "Debug As... Java Application"?

здесь раздел 19.2 in Spring Boot Reference это говорит вам о запуске приложения с включенной поддержкой удаленной отладки.

$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
   -jar target/myproject-0.0.1-SNAPSHOT.jar

после запуска приложения просто добавьте это Удаленная конфигурация приложения Java в конфигурациях Run/Debug выберите порт/адрес, определенный при запуске приложения, а затем вы можете выполнять отладку.

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

  1. убедитесь, что в Eclipse установлен плагин Maven.
  2. клик Run > Run Configuration > Maven Build > new launch configuration:
    • база каталогов: перейдите к корню вашего проекта
    • цели: spring-boot::run.
  3. клик применить затем нажмите кнопку выполнить.

NB. Если ваша IDE имеет проблемы с поиском исходного кода вашего проекта при выполнении построчной отладки, взгляните на это так ответ чтобы узнать, как вручную прикрепить исходный код к приложению отладки.

надеюсь, это кому-то поможет!

простое решение:

вместо ввода mvn spring-boot:run, просто наберите mvnDebug spring-boot:run

вам все равно нужно будет подключить отладчик в Eclipse, создав новую конфигурацию отладки для "удаленного приложения Java" на соответствующем порту.

выполнить следующую команду, где pom.xml размещено:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

и начать свой удаленное приложение java с опцией отладки порт 5005

отладка удаленного промежуточного или производственного Весна загрузки приложения

на стороне сервера

предположим, что вы успешно следовали руководство Spring Boot по настройке приложения Spring Boot в качестве службы. Артефакт приложения находится в /srv/my-app/my-app.war в сопровождении файл конфигурации /srv/my-app/my-app.conf:

# This is file my-app.conf
# What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script
# (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script
# gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that
# we can also do in a regular shell script.

JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n"
export SPRING_PROFILES_ACTIVE=staging

при перезагрузке приложения Spring Boot с помощью sudo service my-app restart, то в его лог-файл, расположенный в /var/log/my-app.log должно быть такую строку:Listening for transport dt_socket at address: 8002.

на стороне клиента (машина разработчика)

откройте туннель пересылки портов SSH на сервер:ssh -L 8002:localhost:8002 myusername@staging.example.com. Продолжайте этот сеанс SSH.

в Eclipse на панели инструментов выберите выполнить ->Отладка Конфигураций -> выберите Удаленное Приложение Java -> выберите новая кнопка - > Выбрать тип подключения Стандартный (Гнездо Прикрепить), как хозяин localhost, а как порт 8002 (или все, что вы настроили в шагах ранее). Нажмите применить а то Debug.

теперь отладчик Eclipse должен подключиться к удаленному серверу. Переключение на Debug перспектива должна показывать подключенную JVM и ее потоки. Точки останова должны срабатывать, как только они удаленно срабатывают.

лучшим решением, на мой взгляд, является добавление плагина в pom.xml, и вам не нужно делать ничего другого все время:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>
                        -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898
                    </jvmArguments>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

пожалуйста, смотрите http://java.dzone.com/articles/how-debug-remote-java-applicat для включения удаленной отладки. Если для запуска приложения используется tomcat, запустите tomcat с параметрами удаленной отладки или вы можете запустить tomcat с поддержкой JPDA, используя следующую команду.

Windows

<tomcat bin dir>/startup.bat jpda

* nix

<tomcat bin dir>/startup.sh jpda

это позволит удаленную отладку на порту 8000

с eclipse или любой другой IDE, просто щелкните правой кнопкой мыши на главном приложении spring boot и нажмите кнопку "debug as java application"

на этот вопрос уже дан ответ, но я также получил тот же вопрос для отладки Springboot + gradle + jHipster,

в основном приложение Spring boot может отлаживать правой кнопкой мыши и отлаживать, но когда вы используете gradle, имея некоторую дополнительную настройку параметров среды, то невозможно отлаживать напрямую.

чтобы решить эту проблему, Eclipse предоставил одну дополнительную функцию как Удаленное Приложение Java

С помощью этой функции вы можете отлаживать приложение.

выполните следующие действия:

запустите приложение gradle с помощью ./gradlew bootRun --debug-jvm команда

Теперь перейдите в eclipse -- > щелкните правой кнопкой мыши проект и отладьте конфигурацию -- > удаленное приложение Java.

добавить хост и порт как localhost и порт как 5005 (по умолчанию для gradle debug, вы можете изменить его)

см. для более подробной информации и шага.

  • щелкните правой кнопкой мыши на вашем проекте и выберите " Debug As = > Java application или Spring boot App" - capture1 - enter image description here
  • Если вы хотите, чтобы ваше приложение приостановилось где-то в вашем приложении, дважды щелкните слева, у вас будет такой захват 2. enter image description here
  • затем, когда вы начинаете свое приложение, используйте эти стрелки, чтобы идти дальше.(захват 3) enter image description here