Не удалось отладить в 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)
Как это исправить? Почему это происходит?
Ответы
Ответ 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
-
Перезагрузите компьютер, чтобы эти изменения вступили в силу. Ошибка больше не должна возникать.