我正在尝试使用Eclipse作为IDE在我的机器上调试一个简单的Java应用程序。当我尝试通过进入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)
我该如何纠正?为什么会这样?
答案 0 :(得分:26)
我遇到了同样的问题。
昨天一切正常,现在没什么 - 和你给的一样错误。我发现网络管理员在此期间做了一些改变。防火墙有些东西。问题是Eclipse尝试在“localhost”(和一些随机端口)建立与JVM的连接。当我尝试ping 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的本地主机请求 - 则会中断。我不得不改变主机文件并删除以下行中的注释,所以我不再依赖DNS了:
# 127.0.0.1 localhost
# ::1 localhost
虽然写道主机文件更改立即生效,但我认为有些进程锁定了这个并且在我的情况下重启是必要的。之后,一切都恢复了。
答案 1 :(得分:4)
看起来像here一样的问题。重新启动电脑修复了那里的问题。我还没有找到任何其他解决方案。
答案 2 :(得分:2)
非常简单,只需在eclipse.ini文件中进行以下更改。
-vm
binary\com.sun.java.jdk.win32.x86_1.6.0.u43\jre\bin\javaw.exe
答案 3 :(得分:2)
我在使用-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
答案 4 :(得分:1)
我改变了
-agentlib:jdwp=transport=dt_socket,address=9009,server=n,suspend=y
到
-agentlib:jdwp=transport=dt_socket,address=9009,server=y,suspend=n
就成功了!
答案 5 :(得分:1)
有同样的问题,但是解决方案是使用-server=y
选项而不是-server=n
运行应用程序。
之前:
java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:5005
之后:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:5005
答案 6 :(得分:0)
我的情况是我在hosts文件中有一堆域引用127.0.0.1,如下所示:
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中得到一个警告窗口:
无法连接到VM com.sun.jdi.connect.TransportTimeoutException
在控制台中:
错误:传输错误202:连接失败:连接被拒绝 错误:JDWP:无法通过localhost初始化传输:50470,通过127.0.0.1:50470尝试localhost 本机方法中的致命错误:JDWP没有传输初始化,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197) 错误:传输错误202:连接失败:连接被拒绝 错误:JDWP传输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
答案 7 :(得分:0)
为我解决的是删除glassfish主文件夹上的domains文件夹中的整个domain1文件夹。 Eclipse会要求您重新创建一个域,然后一切都会再次运行。
答案 8 :(得分:-1)
由于/ etc / hosts文件发生错误,我在ubuntu计算机上遇到了同样的错误。我已经注释掉了localhost到127.0.0.1的映射,并且进一步复杂化了一个交换文件。
这是我/ etc / hosts的第一行:
127.0.0.1 #localhost
删除#修复了问题,而重新启动可以理解为没有。
答案 9 :(得分:-1)
我的事业&解决方案完全不同。
我认为在我的情况下,这是由于安装了JProfiler。我通过卸载JProfiler并使用-clean
选项启动eclipse来修复它。我怀疑JProfiler是在调试器中插入自己的。 <{1}}选项迫使Eclipse重新评估其插件,因此仅此一点就足够了。
答案 10 :(得分:-4)
继续@ gonadarian的回答,似乎Eclipse
使用端口127.0.0.1
进行调试。此端口也称为localhost
。可以删除此错误的方法是确保上述端口上没有运行任何进程或服务。在Linux上执行此操作的方法是:
作为root
,输入命令:
netstat -tulpn | grep 127.0.0.1
如果上述端口上有进程正在运行,它将以以下格式显示:
process_id/process name
。
完成上述过程:kill -KILL process_id
重新启动计算机以使这些更改生效。不应再出现错误。