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

问题描述 投票:0回答:9

我正在尝试在 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 中启动 debug 时也是一样。

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

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

但是,Weld 在我的类路径上。

有什么想法吗?

java eclipse debugging maven jboss-weld
9个回答
32
投票

要终止侦听端口的进程:

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

netstat -ano

-o
选项将显示进程ID。

如果您使用的是 *nix 系统,您可以使用以下方法进一步完善:

netstat -ano | grep <badport> 

当您获得进程 ID 时,您可以通过以下方式终止它:

窗户:

  • 打开任务管理器,使用“视图”>“选择列”>“PID”添加 PID 列
  • 找到该进程,右键杀死它

其他:

kill <PID>

12
投票

Mac 用户:

通常问题是另一个进程使 Maven 调试端口 5005 保持打开状态。 所以我通过执行来检查哪个进程保持此端口打开:

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


5
投票

转到

Debug configuration
->
Remote Java Application
->
Connect
选项卡,选中
Allow termination of remote JVM

然后,当您要重新启动服务器/maven 时,转到

Debug perspective
并单击
read / stop
按钮.....


5
投票

这个问题被问了很长时间,但我最近也遇到了同样的问题。

  1. 打开任务管理器

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

  3. 重新启动mvn调试

希望对你有帮助


3
投票

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

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

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

127.0.0.1 本地主机

配置文件将

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


1
投票

补充一下..我上周也遇到了类似的问题,当时无法使用 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 有帮助。


0
投票

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


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

然后杀死该进程 任务杀死 /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

然后杀死该进程 任务杀死 /F /PID 19904


0
投票

是下面添加的host文件

127.0.0.1 本地主机

固定

© www.soinside.com 2019 - 2024. All rights reserved.