【问题标题】:Maven Eclipse Debug "JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)"Maven Eclipse 调试“JDWP Transport dt_socket 初始化失败,TRANSPORT_INIT(510)”
【发布时间】:2011-12-08 08:46:33
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

  • 我找到了解决方案。我用于调试的端口已经在使用中,可能是由于 maven 的错误。使用 maven.surefire.debug 时,maven 在端口上等待。我杀了它一次,然后重试重新启动 maven 测试。解决方法是关闭打开的端口(我重启了机器,但可能有不太激进的解决方案……)
  • 您可以将此作为自己的解决方案发布,然后在一天后接受。
  • @RémiDoolaeghe 你能分享一下解决方案吗?我目前面临同样的错误。

标签: java eclipse debugging maven jboss-weld


【解决方案1】:

终止监听端口的进程:

这个命令应该列出监听所有端口的进程:

netstat -ano

-o 选项将显示进程 ID。

如果您使用的是 *nix 系统,您可以进一步改进:

netstat -ano | grep <badport> 

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

窗户:

  • 打开任务管理器,使用 View > Select Columns > PID 添加 PID 列
  • 找到进程并右键杀死它

其他:

kill <PID>

【讨论】:

  • 抱歉,-o 选项无法识别。我在 MacOS 10.6 上工作。不过,这个解决方案似乎是个好主意。
  • 我认为您可以在 OS X 上使用 'sudo lsof -i -P' 获取此信息
  • 你是对的。须藤 lsof -i -P | grep 工作正常。谢谢。
  • 在 Ubuntu 中,我添加 netstat -anop 以列出 pid。
  • 如果它有助于寻找正确的进程来杀死,我发现有问题的 java 进程正在侦听端口5005。我还看到它是作为java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar xxxxxx 之类的命令执行的
【解决方案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

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

【讨论】:

    【解决方案3】:

    转到Debug configuration -> Remote Java Application -> Connect 选项卡,检查Allow termination of remote JVM

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

    【讨论】:

      【解决方案4】:

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

      1. 打开任务管理器

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

      3. 重新启动 mvn 调试

      希望对你有帮助

      【讨论】:

        【解决方案5】:

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

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

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

        127.0.0.1 本地主机

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

              使用服务器端口搜索 PID
              netstat -ano|find /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|find /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

              【讨论】:

                猜你喜欢
                • 2019-10-10
                • 2015-06-16
                • 1970-01-01
                • 2019-06-05
                • 1970-01-01
                • 1970-01-01
                • 2021-01-23
                • 1970-01-01
                相关资源
                最近更新 更多