我正在尝试在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在我的课程中。
有什么想法吗?
答案 0 :(得分:25)
要终止侦听端口的进程:
此命令应列出在所有端口上侦听的进程:
netstat -ano
-o
选项将显示进程ID。
如果你正在使用* nix系统,你可以进一步改进:
netstat -ano | grep <badport>
当您拥有进程ID时,可以使用以下命令终止它:
视窗:
其他:
kill <PID>
答案 1 :(得分:4)
转到Debug configuration
- &gt; Remote Java Application
- &gt; Connect
标签,请检查Allow termination of remote JVM
。
然后,当您要重新启动服务器/专家时,请转到Debug perspective
并点击read / stop
按钮.....
答案 2 :(得分:4)
问题有很长一段时间被问到了,但我最近遇到了同样的问题。
打开任务管理器
杀死所有“java.exe”进程
重新启动mvn debug
希望它会有所帮助
答案 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