Как отладить приложение spring -boot с сообществом сообщества IntelliJ IDEA?
У меня возникли трудности с отладкой приложения Java spring -boot в сообществе сообщества IntelliJ IDEA. Основная проблема заключается в том, что среда IDE не останавливается на контрольной точке, даже программа, безусловно, выполняет ее. Как я могу заставить IntelliJ IDEA остановиться в точке останова?
В качестве дополнительной информации, вот мои конфигурации запуска:
Конфигурация Maven с командой: spring -boot: run. Перед запуском я создаю проект.
Ответы
Ответ 1
Единственный способ, которым я работал, - создать отдельную удаленную конфигурацию отладки.
Итак, перейдите в edit configuration → Remote → +. Затем запустите приложение обычно через intelliJ. Затем переключитесь на вновь созданную удаленную конфигурацию. Вместо того, чтобы запускать его, нажмите debug. Теперь отладчик должен быть готов, и вы можете установить контрольные точки, и отладчик остановится на них.
Ответ 2
Для меня эти шаги работают:
- Выберите меню Run → Edit Configurations...
- Создать новую удаленную конфигурацию. По умолчанию вам не нужно менять настройки:
-agentlib: JDWP = транспорт = транспорт по сокетам, сервер = у, приостановить = п, адрес = 5005. Но если вы хотите, например, приостановить JVM перед подключением, вы можете изменить suspend = y. Или вы можете изменить порт и т.д. - Скопируйте командную строку в зависимости от версии JVM и сохраните конфигурацию.
- В окне терминала запустите ваше приложение с (в случае использования Maven и JVM 1.5 и выше) mvn clean spring-boot: run -Drun.jvmArguments = "-agentlib: jdwp = transport = dt_socket, server = y, suspend = n, адрес = 5005"
- Подключитесь к своему приложению, запустив удаленную конфигурацию, созданную ранее на шаге 2. Теперь вы можете отлаживать свое приложение.
Ответ 3
Единственный подход, который работал у меня, - это запуск или отладка приложения непосредственно из Intellij Idea. Просто откройте класс, содержащий
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
И нажмите правую кнопку мыши- > Отладка моего приложения
Ответ 4
tldr: вы можете попробовать настроить командную строку следующим образом:
spring-boot:run -Dspring-boot.run.fork=false
Объяснение:
При запуске приложения в режиме отладки отладчик IntelliJ подключается к процессу Java, который он запускает сам (добавляя соответствующие параметры, -agentlib:jdwp
и т.д., В командную строку Java).
Довольно часто эти Java-процессы могут затем разветвлять новый экземпляр, который не получает те же параметры и, поскольку он находится в отдельном процессе, не подключен к отладчику. Это может сбивать с толку.
Цель spring-boot:run
Maven, в дополнение к разветвлению новой JVM, создает еще большую путаницу, потому что она иногда делает форк, а иногда нет, в зависимости от опций, которые он получает, среди прочего. Часть этого можно найти в документации, но это не всегда очевидно.
Сначала вы должны проверить, действительно ли Java-процесс вообще отлаживается. Когда вы запустите приложение из IntelliJ, вы увидите прокрутку сообщений на вкладке Run/Debug. Вверху есть командная строка, которая выполняется. Он должен содержать параметры отладчика (-agentlib:jdwp
и т.д.), После чего должно появиться сообщение "Подключено к целевой ВМ", которое является отладчиком, подтверждающим, что у него есть контакт.
Далее, если вы не уверены, что JVM разветвлена, вы можете проверить список процессов в вашей ОС, например, в MacOS и * nix, вы можете использовать ps aux | grep java
. Процессы Java обычно имеют гигантский список параметров, большинство из которых - это путь классов. Фактически запускаемое приложение находится в самом конце командной строки. Если JVM была разветвлена, у вас есть процесс, выполняющий цель Maven, и еще один, выполняющий приложение Spring. Тогда ваш отладчик будет подключен к процессу, который вас не интересует, и ваши контрольные точки не будут работать.
Чтобы остановить spring-boot:run
от разветвления, вы можете использовать параметр fork
выше.
Ответ 5
Я обнаружил, что включение Spring Dev Tools в мою сборку приводило к сбою отладки IntelliJ (согласно вашему описанию выше). Если вы не используете эту функцию, просто удалите ее из сборки.
При использовании Maven, строки ниже должны быть удалены из вас pom.xml.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Ответ 6
piphonom anwser хорош, но вам нужно сделать немного больше, что добавляет jvmArguments к плагину maven, как этот
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
</jvmArguments>
</configuration>
</plugin>
для получения дополнительной информации о удаленном debuge для проекта загрузки spring, прочитайте this
Ответ 7
К сожалению, все предыдущие ответы неполные. Я потратил много времени, чтобы найти правильный способ удаленной отладки в IntelliJ, и вот полное объяснение.
Мы предполагаем, что код проекта находится на вашем локальном компьютере (ОС Windows), и у вас есть развертывание проекта на виртуальной машине Ubuntu на вашем сервере (или на вашей рабочей станции VMWare). и эти две машины находятся в одной сети (они могут пинговать друг друга)
Прежде всего, добавьте новую конфигурацию Run/Debug, используя меню Run> Edit Configuration, а затем нажмите кнопку + в левом верхнем углу и выберите опцию "Remote". Сохраните параметры конфигурации как есть и просто определите имя для вашей новой конфигурации.
Во-вторых, откройте замазку и подключитесь к удаленному серверу по SSH. Запустите команду ниже, чтобы добавить функцию удаленной отладки в ваш проект в терминале замазки:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Теперь перейдите в корневой каталог вашего проекта на удаленном сервере (в том же сеансе замазки) и запустите его, используя команду, которую вы обычно используете для этого (например, моя следующая):
mvn -U clean spring-boot:run
Здесь идет самая важная часть, которой все пренебрегали здесь :)
Щелкните правой кнопкой мыши в верхней части окна сеанса замазки и выберите "Изменить настройки...". Перейдите к пути Connection> SSH> Tunnels в левой части дерева настроек. Теперь добавьте две записи переадресации портов, например, следующую картинку (одна локальная, которая перенаправляет порт localhost 5005 на IP-адрес вашего удаленного сервера с тем же номером порта, и одна удаленная, которая перенаправляет удаленный порт 5005 на порт 5005 на машине localhost)
![enter image description here]()
Наконец, вернитесь к IntelliJ и в меню "Выполнить" выберите ранее добавленную конфигурацию, а затем нажмите кнопку "Отладка". Ваш локальный IntelliJ IDEA должен быть подключен к удаленному развертыванию вашего проекта, готов к отладке !!
![enter image description here]()
Ответ 8
на InteliJ Перейти к run-> редактировать конфигурацию → нажать "+" → выбрать "Приложение"
заполните поля: основной класс, рабочий каталог, путь к классу модуля
Ответ 9
-
включите порт отладки в вашем приложении pom.XML, например:
<Плагин>
<Идентификатор_группы> org.springframework.boot </идентификатор_группы>
<Конфигурация>
<JvmArguments>
-Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = 5005
</JvmArguments>
</Конфигурация>
</Плагин>
- следуйте предложению Ville Miekk-oja
Итак, перейдите к редактированию configurations-> Remote ->+. Затем нормально запустите ваше приложение через intelliJ. Затем переключитесь на вновь созданную удаленную конфигурацию. Вместо запуска нажмите отладку. Теперь отладчик должен быть готов, и вы можете установить точки останова, и отладчик остановится на них.
Ответ 10
Я столкнулся с подобной проблемой: src/main/webapp не может быть включен в проект, это делает отладку в основном классе бесполезной. Поэтому я пытаюсь найти способ отладки mvn spring-boot: запустить на Intellij.
Затем я нашел видео на YouTube, в котором показан метод использования плагина maven Intellij для отладки. Это просто и решить вопрос.