Отладчик Java VSCode выдает ошибку » org.eclipse.jdi.internal.connect.ConnectImpl$StringArgumentImpl.’

#java #spring-boot #visual-studio-code #vscode-debugger

Вопрос:

Я долгое время работал с проектом Spring Boot в VS Code, но вчера я столкнулся с этой ошибкой при попытке запустить отладчик Java для этого проекта.

Простой режим запуска работает нормально, но режим отладки выдает следующую ошибку для того же проекта с той же launch.json конфигурацией, которую я прикрепляю ниже:

Диалоговое окно ошибки и моя конфигурация launch.json

До сих пор я пытался перезапустить VSCode и свой компьютер, пытаясь перезапустить проект, как только компьютер загрузится, прежде чем любое другое приложение или служба, которые могут использовать любой порт, но ошибка все равно возникает.

Пожалуйста, кто-нибудь может дать мне подсказку, как это исправить?

Спасибо.

Ответ №1:

Это связано с расширением VS code, перезагрузите расширение отладчика java

Комментарии:

1. Это в точку, у меня была та же проблема, и я посетил панель расширений, обнаружил, что плагин «Отладчик для Java» был помечен как «Требуется перезагрузка». Я перезагрузил и заново построил код и смог успешно запустить отладчик.

2. То же самое и для меня. Просто перезагрузите VSCode из расширения, и ошибка исчезла. Спасибо.

3. Мне пришлось установить более новую версию расширения отладчика java (нажмите «ctrl p» и выполните «ext install vscode-java-debug»).

Ответ №2:

Я попытался перезагрузить и переустановить плагины, но это не решило проблему для меня. Расширение «Visual Studio IntelliCode» необходимо было перезагрузить, но это все равно не решило мою проблему.

Однако мое приложение запустилось, когда я прокомментировал настройки консоли в файле launch.json. Приложение загрузилось в окне терминала без проблем. Кроме того, я добавил команду отладки spring boot в args. Это, по-видимому, тоже необходимо.

 // "console": "internalConsole",
"args": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000",
 

запуск.json

Я предполагаю, что на самом деле это обход внутренней консоли, но это работает.

Кроме того, внешний интерфейс, похоже, тоже работает.

 "console": "externalTerminal",