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

2022-09-01 06:01:02

我正在尝试在 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中尝试tu启动调试时也是如此。

我试图添加maven选项forkMode=never,并且我的焊接工件有另一个错误,如果没有maven.surefire.debug选项,我就没有这个错误:

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

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

有什么想法吗?


答案 1

要终止侦听端口的进程:

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

netstat -ano

该选项将显示进程 ID。-o

如果您使用的是 *nix 系统,则可以通过以下方式进一步优化:

netstat -ano | grep <badport> 

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

窗户:

  • 打开任务管理器,添加带有“查看”>选择 PID 列> PID 列
  • 找到该进程并右键单击以终止它

别人:

kill <PID>

答案 2

对于 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