Maven Eclipse Debug“JDWP Transport dt_socket初始化失败,TRANSPORT_INIT(510)”

时间:2011-12-08 08:46:33

标签: java eclipse debugging maven jboss-weld

我正在尝试在Eclipse中调试Maven测试。当我使用maven选项maven.surefire.debug启动测试时,我收到此错误:

ERROR: transport error 202: bind failed: Address already in use
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
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:690]
/bin/sh: line 1: 27500 Abort trap        

当我在shell中尝试启动调试时,它是一样的。

我尝试添加maven选项forkMode = never,如果没有maven.surefire.debug选项,我的焊接工件会出现另一个错误:

Error loading Weld bootstrap, check that Weld is on the classpath

但是,Weld在我的课程中。

有什么想法吗?

8 个答案:

答案 0 :(得分:25)

要终止侦听端口的进程:

此命令应列出在所有端口上侦听的进程:

netstat -ano

-o选项将显示进程ID。

如果你正在使用* nix系统,你可以进一步改进:

netstat -ano | grep <badport> 

当您拥有进程ID时,可以使用以下命令终止它:

视窗:

  • 打开任务管理器,使用View&gt;添加PID列。选择列&gt; PID
  • 找到该过程并右键单击以将其删除

其他:

kill <PID>

答案 1 :(得分:4)

转到Debug configuration - &gt; Remote Java Application - &gt; Connect标签,请检查Allow termination of remote JVM

然后,当您要重新启动服务器/专家时,请转到Debug perspective并点击read / stop按钮.....

答案 2 :(得分:4)

问题有很长一段时间被问到了,但我最近遇到了同样的问题。

  1. 打开任务管理器

  2. 杀死所有“java.exe”进程

  3. 重新启动mvn debug

  4. 希望它会有所帮助

答案 3 :(得分:2)

通常问题是另一个进程使Maven调试端口5005保持打开状态。 在我的Mac上,我通过执行:

检查了哪个进程保持此端口打开
lsof -i tcp:5005

输出结果为:

COMMAND  PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    9089 my_user    7u  IPv4 0xe88ec542fd4cffc9      0t0  TCP *:avt-profile-2 (LISTEN)

然后我杀了这个过程:

kill -9 9089

如果您希望这两个进程能够一起运行,则必须更改至少其中一个进程的Maven调试端口。 请参阅:http://maven.apache.org/surefire/maven-surefire-plugin/examples/debugging.html

答案 4 :(得分:1)

仅用于文档,我在本地运行时遇到完全相同的错误:

  

错误:传输错误202:绑定失败:地址已在使用中   本机方法中的致命错误:JDWP没有传输初始化,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)   错误:JDWP Transport dt_socket无法初始化,TRANSPORT_INIT(510)

在我的情况下,端口不是问题,而是主机文件。解决方案是添加/重新添加/取消注释:

  

127.0.0.1 localhost

配置文件将localhost设置为默认值,因此解决方案是添加该主机或将其更改为自定义主机。

答案 5 :(得分:0)

要添加..我上周遇到了类似的问题,因为使用eclipse进行调试是不可能的。

FATAL ERROR in native method: JDWP No transports initialized,
jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)
ERROR: transport library not found: dt_socket
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [../../../src/share/back/debugInit.c:690]

可悲的是,我可以在网上找到的解决方案没有用。

问题原来是防火墙以某种方式删除了我的JRE bin中的所有dll ...(因此dt_socket.dll完全丢失了)。

重新安装整个JRE有帮助。

答案 6 :(得分:0)

我的解决方案是删除项目的断点!如果你有很多分支并且最近有所改变,有时eclipse会丢失一些断点。

答案 7 :(得分:0)

首先删除eclipse中的所有调试点

使用服务器端口搜索PID
netstat -ano |查找/ i“ 7001”
在上面的行中用您的端口号替换7001

样本o / p C:\ Users \ shaithal> netstat -ano | find / i“ 7001” TCP 127.0.0.1:51340 127.0.0.1:7001 SYN_SENT 17396

然后杀死该进程 taskkill / F / PID 17396

还通过调试端口搜索PID netstat -ano |查找/ i“ 8453” 8453是我的调试端口,在上面的行中将8453替换为您的端口号

样本o / p

C:\ Users \ shaithal> netstat -ano | find / i“ 8453” TCP 0.0.0.0:8453 0.0.0.0:0侦听19904

然后杀死该进程 taskkill / F / PID 19904