Как отладить приложение Spring Boot с помощью Eclipse?
мой Spring Boot
webapp работает просто отлично, и я хотел бы отладить его через Eclipse.
Итак, при запуске моего удаленного отладчика приложений Java, какой порт я должен слушать? И есть ли параметр в моем веб-приложении, который я должен установить, чтобы включить отладку?
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.
- убедитесь, что в Eclipse установлен плагин Maven.
- клик Run > Run Configuration > Maven Build > new launch configuration:
- база каталогов: перейдите к корню вашего проекта
- цели:
spring-boot::run
.- клик применить затем нажмите кнопку выполнить.
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 -
- Если вы хотите, чтобы ваше приложение приостановилось где-то в вашем приложении, дважды щелкните слева, у вас будет такой захват 2.
- затем, когда вы начинаете свое приложение, используйте эти стрелки, чтобы идти дальше.(захват 3)