无法使用eclipse在Java中进行调试

我正在尝试使用Eclipse作为IDE在我的机器上调试一个简单的Java应用程序。 当我尝试通过进入Debug Perspective来调试应用程序时,我设置了一个断点并开始调试。 在几秒钟内,出现以下弹出窗口:

Launching unicodeRead has encountered a problem. Cannot connect to VM 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) 

我该如何纠正? 为什么会这样?

我刚遇到同样的问题。

昨天一切正常,现在没什么 – 和你给的一样错误。 我发现网络管理员在此期间做了一些改变。 防火墙有些东西。 问题是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 

虽然写入主机文件更改立即生效,但我认为有些进程锁定了这个并且在我的情况下重启是必要的。 在那之后,一切都恢复了。

看起来像这里一样的问题。 重新启动电脑修复了那里的问题。 我还没有找到任何其他解决方案。

它非常简单,只需在eclipse.ini文件中进行以下更改即可。

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

我的情况是我在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 FATAL ERROR尝试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

解决了我的问题是删除glassfish主文件夹上domains文件夹中的整个domain1文件夹。 Eclipse会要求您重新创建一个域,然后一切都会再次运行。

我在使用-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 

我在ubuntu机器上遇到了同样的错误,因为/ etc / hosts文件出了问题。 我已经注释掉了localhost到127.0.0.1的映射,并且进一步复杂化了一个交换文件。

这是我/ etc / hosts的第一行:

 127.0.0.1 #localhost 

删除#修复了问题,而重新启动可以理解没有。

我的事业和解决方案完全不同。
我认为在我的情况下,这是由于安装了JProfiler。 我通过卸载JProfiler并使用-clean选项启动eclipse来修复它。 我怀疑JProfiler将自己插入调试器中。 -clean选项迫使Eclipse重新评估其插件,因此仅此一项就足够了。

继续@ gonadarian的回答,似乎Eclipse使用端口127.0.0.1进行调试。 此端口也称为localhost 。 可以删除此错误的方法是确保上述端口上没有运行任何进程或服务。 在Linux上执行此操作的方法是:

  1. root输入命令:
    netstat -tulpn | grep 127.0.0.1

  2. 如果上述端口上正在运行进程,它将以以下格式显示:
    process_id/process name

  3. 杀死上面的过程如下: kill -KILL process_id

  4. 重新启动计算机以使这些更改生效。 不应再出现错误。