我正在尝试在 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 在我的类路径上。
有什么想法吗?
要终止侦听端口的进程:
此命令应列出侦听所有端口的进程:
netstat -ano
-o
选项将显示进程ID。
如果您使用的是 *nix 系统,您可以使用以下方法进一步完善:
netstat -ano | grep <badport>
当您获得进程 ID 时,您可以通过以下方式终止它:
窗户:
其他:
kill <PID>
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。
转到
Debug configuration
-> Remote Java Application
-> Connect
选项卡,选中 Allow termination of remote JVM
。
然后,当您要重新启动服务器/maven 时,转到
Debug perspective
并单击 read / stop
按钮.....
这个问题被问了很长时间,但我最近也遇到了同样的问题。
打开任务管理器
杀死所有“java.exe”进程
重新启动mvn调试
希望对你有帮助
仅用于文档,我在本地运行时遇到了完全相同的错误:
错误:传输错误 202:绑定失败:地址已在使用中 本机方法中出现致命错误:JDWP 未初始化传输,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) 错误:JDWP Transport dt_socket 初始化失败,TRANSPORT_INIT(510)
就我而言,端口不是问题,而是主机文件。解决方案是添加/重新添加/取消注释:
127.0.0.1 本地主机
配置文件将
localhost
设置为默认值,因此解决方案是添加该主机或将其更改为自定义主机。
补充一下..我上周也遇到了类似的问题,当时无法使用 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 有帮助。
我的解决方案是删除项目的断点!如果你有很多分支并且最近更改过,有时 Eclipse 会丢失一些断点。
首先删除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
是下面添加的host文件
127.0.0.1 本地主机
固定