Ответ 1
Почему бы вам просто не щелкнуть правой кнопкой мыши по методу main()
и выбрать "Debug As... Java Application"
?
My Spring Boot
webapp работает нормально, и я хотел бы отлаживать его через Eclipse.
Итак, при запуске моего отладчика удаленных приложений Java, какой порт я должен слушать? И есть ли настройка на моем webapp, которую я должен установить для включения отладки?
Почему бы вам просто не щелкнуть правой кнопкой мыши по методу main()
и выбрать "Debug As... Java Application"
?
Там раздел 19.2 в Spring Справочник загрузки, в котором говорится вам о запуске приложения с поддержкой удаленной отладки.
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myproject-0.0.1-SNAPSHOT.jar
После запуска приложения просто добавьте эту конфигурацию Удаленное Java-приложение в конфигурациях запуска/отладки, выберите порт/адрес, который вы определили при запуске приложения, а затем вы сможете отлаживать.
Простое решение:
Вместо ввода mvn spring-boot:run
,
просто введите mvnDebug spring-boot:run
Вам все равно нужно подключить отладчик в Eclipse, создав новую конфигурацию Debug для "удаленного приложения Java" на соответствующем порту.
Мне не нужно было настраивать удаленную отладку, чтобы получить эту работу, я использовал Maven.
spring-boot::run
.NB. Если у вашей среды IDE возникают проблемы с поиском исходного кода проекта при выполнении поэтапной отладки, посмотрите this SO ответ, чтобы узнать, как вручную прикрепить исходный код к приложению отладки.
Надеюсь, это поможет кому-то!
Предположим, что вы успешно выполнили Spring Руководство по загрузке при настройке вашего приложения загрузки Spring как службы.
Артефакт приложения находится в /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 с помощью 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 и ее потоки. Точки останова должны срабатывать, как только они запускаются дистанционно.
Запустите команду ниже, где находится pom.xml
:
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
И запустите удаленное java-приложение с параметром отладки на порту 5005
Лучшим решением, на мой взгляд, является добавление плагина в 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, используя следующую команду.
Окна
<tomcat bin dir>/startup.bat jpda
* Никс
<tomcat bin dir>/startup.sh jpda
это позволит удаленную отладку на порту 8000
С помощью eclipse или любой другой среды IDE просто щелкните правой кнопкой мыши на основном загрузочном приложении spring и выберите "debug as java application"
На этот вопрос уже дан ответ, но я также получил ту же проблему для отладки Springboot + gradle + jHipster,
В большинстве случаев загрузочное приложение Spring может отлаживаться с помощью щелчка правой кнопкой мыши и отладки, но когда вы используете gradle, имея дополнительную настройку параметров среды, то отладка напрямую невозможна.
Для решения этой проблемы Eclipse предоставил одну дополнительную функцию в качестве удаленного Java-приложения.
с помощью этой функции вы можете отладить ваше приложение.
Следуйте ниже шаг:
запустите ваше приложение gradle с ./gradlew bootRun --debug-jvm
Теперь перейдите к eclipse → проект правой кнопкой мыши и отладка конфигурации → Remote Java Application.
добавьте ваш хост и порт в качестве локального хоста, а порт в качестве 5005 (по умолчанию для Gradle Debug, вы можете изменить его)
Обратитесь за более подробной информацией и шагом.
Right click on the spring boot project → debug as → spring boot App
. Поставьте точку отладки и вызовите приложение от клиента, такого как почтальон
Щелкните правой кнопкой мыши файл основного класса Spring Boot Applications → выберите параметры Debug As → выберите приложение Java
Теперь вы можете использовать точки останова для отладки приложения.