Почему мое приложение Java Spring выходит из строя, если я запускаю его с флагами «-XDebug» и «-Xrunjdwp» одновременно?

У меня есть приложение Java Spring, которое можно запустить с помощью

./mvnw spring-boot:run

Я хочу отладить это приложение, поэтому пытаюсь запустить его с флагами

./mvnw spring-boot:run -Dspring-boot.run.jvmArguments = "-XDebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

И получите ошибку:

Unrecognized option: -XDebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

Но когда я пытаюсь запустить одно и то же приложение с флагами «XDebug» и «Xrunjdwp» отдельно:

./mvnw spring-boot:run -Dspring-boot.run.jvmArguments = "-XDebug"

./mvnw spring-boot:run -Dspring-boot.run.jvmArguments = "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Запускается без ошибок.

Почему я получаю сообщение об ошибке при попытке использовать оба флага одновременно? Я предполагаю, что по какой-то причине Java рассматривает «-XDebug -Xrunjdwp» как один флаг, но я не понимаю, в чем причина этого.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

-XDebug и -Xrunjdw — это старые параметры отладки, которые были заменены со времен Java 6. Если вы не используете Java 5 с 2006 года, вам следует использовать современные аргументы отладки: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000.

Спасибо, замена двух флагов на один -agentlib:jdwp помогла, поэтому я отметил ваш ответ как правильный. Но, честно говоря, это всего лишь обходной путь, а не решение проблемы с аргументами. Почему Spring работает нормально, если я предоставляю аргументы один за другим, но происходит сбой, когда я предоставляю два аргумента? Что, если в будущем мне понадобится предоставить два аргумента по причинам, отличным от отладки?

Vaks 18.06.2024 21:18

Другие вопросы по теме