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

Моя Spring Boot Webapp работает нормально, и я хотел бы отладить ее через Eclipse.

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

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

В разделе Spring Boot Reference содержится раздел 19.2, в котором говорится о запуске приложения с поддержкой удаленной отладки.

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

После того, как вы запустите приложение, просто добавьте эту конфигурацию удаленного Java-приложения в конфигурации « Запуск / отладка», выберите порт / адрес, который вы определили при запуске приложения, а затем вы сможете отлаживать.

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

  1. Убедитесь, что в Eclipse установлен плагин Maven.
  2. Нажмите « Выполнить»> «Запустить конфигурации»> «Конфигурация Maven»> новая конфигурация запуска :
    • Базовый каталог: найдите корень вашего проекта
    • Цели: spring-boot::run .
  3. Нажмите « Применить», затем « Выполнить» .

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

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

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

Вместо того, чтобы печатать mvn spring-boot:run , просто введите mvnDebug spring-boot:run

Вам все равно придется присоединить отладчик в Eclipse, создав новую конфигурацию Debug для «удаленного приложения 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 по настройке вашего приложения 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 по # 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 [email protected] . Сохраните этот сеанс SSH.

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

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

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

    org.springframework.boot spring-boot-maven-plugin   -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898      repackage     

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

Windows

 /startup.bat jpda 

* Никс

 /startup.sh jpda 

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

С помощью eclipse или любой другой среды IDE просто щелкните правой кнопкой мыши по вашему основному загрузочному приложению и нажмите «debug as java application»,

На этот вопрос уже ответили, но у меня также была проблема с отладкой Springboot + gradle + jHipster,

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

Чтобы решить эту проблему, Eclipse предоставил дополнительные возможности в качестве приложения Remote Java

используя эти функции, вы можете отлаживать свое приложение.

Следуйте ниже:

запустите приложение gradle с ./gradlew bootRun --debug-jvm

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

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

См. Подробности и шаг.

Interesting Posts
Давайте будем гением компьютера.