Подтвердить что ты не робот

Не удалось отладить в Java с eclipse

Я пытаюсь отлаживать простое приложение Java на моей машине, используя Eclipse в качестве среды IDE. Когда я пытаюсь отладить приложение, введя Debug Perspective, я устанавливаю точку останова и начинаю отладку. В течение нескольких секунд появится следующее всплывающее окно:

Launching unicodeRead has encountered a problem. Cannot connect to VM.

Сообщение, отправленное на консоль, выглядит следующим образом:

ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:708]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)  

Как это исправить? Почему это происходит?

4b9b3361

Ответ 1

У меня была такая же проблема.

Вчера все работало нормально, теперь ничего - ту же ошибку, что и вы дали. Я узнал, что администраторы сети внесли некоторые изменения в это время. Некоторые брандмауэры. Проблема в том, что Eclipse пытается установить соединение с JVM на "localhost" (и некоторый случайный порт). Когда я попытался выполнить pinging localhost (или 127.0.0.1), я получил следующее:

C:\Windows\system32>ping 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

и

C:\Windows\system32>ping localhost
Ping request could not find host localhost. Please check the name and try again.

Это означает, что в некоторых случаях DNS, как ожидается, разрешит это, и если брандмауэр предотвратит запросы локального хоста на разрывы DNS файлов. Мне пришлось изменить файл hosts и удалить комментарии в следующих строках, поэтому я больше не буду полагаться на DNS:

# 127.0.0.1       localhost
# ::1             localhost

Хотя написано, что изменения файлов хостов вступают в силу немедленно, я думаю, что некоторые процессы заблокировали это и перезапустили в моем случае. После этого все снова работало.

Ответ 2

Похож на ту же проблему, что и здесь. Там была перезагрузка компьютера. Я не нашел других решений.

Ответ 3

Его очень просто, просто выполните следующие изменения в файле eclipse.ini.

-vm
binary\com.sun.java.jdk.win32.x86_1.6.0.u43\jre\bin\javaw.exe

Ответ 4

Я обнаружил ошибку при использовании формата -X:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

Ошибка исчезла, когда я переключился на более новый формат:

java -agentlib:jdwp=transport=dt_socket,server=y,address=4000,suspend=n myapp

Ответ 5

В моем случае у меня есть куча доменов, относящихся к 127.0.0.1 в файле hosts, например:

127.0.0.1 localhost domian1.local domain2.local domain3.local

В один прекрасный день я добавил еще один новый домен для ссылки на 127.0.0.1. По ошибке я помещаю домен перед "localhost", например:

127.0.0.1 domain4.local localhost domian1.local domain2.local domainx.local

После этого у меня всегда было окно предупреждения в eclipse во время отладки:

Не удается подключиться к виртуальной машине com.sun.jdi.connect.TransportTimeoutException

В консоли:

ОШИБКА: ошибка транспорта 202: соединение не выполнено: соединение отклонено ОШИБКА: JDWP: не удалось инициализировать транспорт через localhost: 50470, пробовать localhost через 127.0.0.1:50470 FATAL ERROR в собственном методе: JDWP Нет инициализированных транспортов, jvmtiError = AGENT_ERROR_TRANSPORT_INIT (197) ОШИБКА: ошибка транспорта 202: соединение не выполнено: соединение отклонено ERROR: JDWP Transport dt_socket не удалось инициализировать, TRANSPORT_INIT (510) Ошибка выхода JDWP AGENT_ERROR_TRANSPORT_INIT (197): инициализируется транспортная передача [../../../src/share/back/debugInit.c: 690]

Решение сохраняет "localhost" в первой позиции все время.

127.0.0.1 localhost domian1.local domain2.local domainx.local domain4.local

Ответ 6

Что для меня решило, так это удаление всей папки domain1 внутри папки domains в главной папке glassfish. Eclipse попросит вас воссоздать домен, после чего все снова заработает.

Ответ 7

Была такая же проблема на Ubuntu и Payara 5.193. Ответ карлоса АБС (удаление домена и создание нового) помог. Большое спасибо !

Ответ 8

Я получал ту же ошибку на моей машине ubuntu из-за неудачи с файлом /etc/hosts. Я прокомментировал сопоставление localhost с 127.0.0.1, и чтобы усложнить ситуацию, там был файл подкачки.

Это была первая строка моего /etc/hosts:

127.0.0.1       #localhost

Удаление # исправило проблему, тогда как перезагрузка, по понятным причинам, не помогла.

Ответ 9

Моя причина и решение были совершенно разными.
Я думаю, что в моем случае это было связано с установкой JProfiler. Я исправил его, удалив JProfiler и запустив eclipse с помощью опции -clean. Я подозреваю, что JProfiler вставлял себя в отладчик. Опция -clean заставляет Eclipse переоценивать свои плагины, поэтому, возможно, этого было достаточно.

Ответ 10

Продолжая @gonadarian ответ, кажется, что Eclipse использует порт 127.0.0.1 для целей отладки. Этот порт также называется localhost. Способ устранения этой ошибки заключается в том, что на этих портах нет процессов или служб. Способ сделать это, в Linux:

  • В качестве root введите команду:
    netstat -tulpn | grep 127.0.0.1

  • Если на этом порте есть процессы, они будут отображаться в формате:
    process_id/process name.

  • Убейте вышеупомянутые процессы следующим образом: kill -KILL process_id

  • Перезагрузите компьютер, чтобы эти изменения вступили в силу. Ошибка больше не должна возникать.