【问题标题】:Eclipse Error: "Failed to connect to remote VM"Eclipse 错误:“无法连接到远程 VM”
【发布时间】:2010-11-01 19:14:26
【问题描述】:

当我从 Eclipse IDE 启动 Debug 时出现以下错误。

留言:“Failed to connect to remote VM. Connection Refused”

可能是什么原因?

【问题讨论】:

  • 您是在调试本地应用程序还是远程应用程序?
  • 请注意,如果您尝试调试本地应用程序并收到此错误,可能是因为您的 /etc/hosts(或 C:\WINDOWS\system32\drivers\etc\ hosts) 文件具有“localhost”的虚假映射。我以前见过。
  • 检查您是否错误地指定了端口 8080 而不是 8000。它发生在我身上。
  • 如果你正在调试一个远程java应用程序,打开调试透视图,检查是否有任何已经附加的虚拟机。 Eclipse 无法显示调试透视图,因为它遇到了断点。
  • 我右键单击“调试”透视按钮并选择“重置”。它相应地起作用了。

标签: java eclipse


【解决方案1】:

您是否已将远程 VM 设置为接受连接?

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=10000,suspend=n yourServer

有防火墙吗?

您是否指定了正确的主机/端口?

您是否连接到 VPN?

【讨论】:

  • 我的问题是不小心将调试标志添加到命令行的末尾,所以它们只是传递给程序本身。
  • 参数“yourServer”与什么匹配?它似乎是一个java类......如何正确设置它?
  • 我在 Eclipse 中的调试配置更改了我的端口号。 :(
  • 我已经重新安装(通过 RPM)并且忘记修改我的 /etc/init.d 脚本以包含 jpda 标志
  • 关闭 VPN 连接对我有帮助 :)
【解决方案2】:

添加到您的运行脚本:

export JPDA_ADDRESS=8787
export JPDA_TRANSPORT=dt_socket
export JPDA_HOST=localhost

JAVA_OPTS=$JAVA_OPTS -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000
JAVA_OPTS=$JAVA_OPTS -Dsun.rmi.dgc.server.gcInterval=3600000
JAVA_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=n $JAVA_OPTS

【讨论】:

  • 你想在哪里运行这些脚本?我们实际尝试连接的本地或远程 VM 机器?
【解决方案3】:

我们的开发镜像上只有Tomcat服务安装,所以设置环境变量等没有任何作用。如果您需要通过 Tomcat Windows 服务执行此操作,您需要注意以下几点:

  • David Citron 的评论是我需要让我的连接正常工作的最后一点。我们机器上的主机文件已将 localhost 注释掉(据说它是通过 DNS 解析的,但这不适用于调试连接)。我取消了它的注释并且能够连接。
  • 如果启用了用户访问控制,您将需要使用您的管理员凭据来访问服务控制面板或 Tomcat 监控应用程序或任何您用来切换服务器状态的工具。监控应用程序(记录在 here)可能是最好的,因为您既可以编辑调试选项的服务器设置,也可以启动和停止服务器。
  • 我认为您可能需要以管理员身份运行 Eclipse 才能终止 Tomcat 进程,但您没有这样做。拥有该远程附件后,您就可以使用该服务直至终止。

【讨论】:

    【解决方案4】:

    此错误的可能原因:

    1. 您的远程 Java 应用程序没有运行。
    2. 检查您的主机和端口,很多时候这些条目不正确。
    3. 防火墙不允许访问您的远程端口。

    您也可以查看how to guide on eclipse remote debugging了解更多详情。

    【讨论】:

    • 勾选第三个选项,可以使用telent。例如:telnet
    • 此错误的任何其他可能原因?对我来说,主机和端口号是正确的,我正在尝试调试本地运行的服务
    【解决方案5】:

    我通过在调试窗口/透视图中断开与所有远程 Java 应用程序的连接并重新启动 Eclipse 来解决这个问题。这样做后我可以再次连接。

    【讨论】:

      【解决方案6】:

      卸载并重新安装 ADT android 插件。

      【讨论】:

        【解决方案7】:

        David Citron 是对的——如果 localhost 没有正确解析,它可能会导致这个问题。测试方法如下:

        如果您的电脑未连接网络(无 WiFi、无网线)时它可以工作。如果它在这些条件下确实有效,那么您可能需要确保地址正确解析为 localhost。 DDMS 和 adb.exe 用于调试和与 VM 通信的消息必须在您的 PC 上正确解析为 localhost。 (是的,奇怪的是,其他使用 DDMS 和 adb 的命令可以正常工作,但调试却不行。似乎 DDMS 或 adb 中的某些内容需要标准化,以便它们都在相同的条件下工作。)

        如果您需要确保事情正确解析为localhost

        1) 确保此行在您的 /Windows/System32/drivers/etc/hosts 文件中:

        127.0.0.1 本地主机
        

        (“127.0.0.1”和“localhost”之间可以有任意数量的空格)

        而且——正如 David Citron 所建议的——确保 hosts 文件是有效的并且其中没有杂乱无章或错误。

        2) 如果这不起作用,那么您可能还需要将 PC 的 IPv4 地址添加到 hosts 文件中,并将其解析为 localhost。 (您可以使用ipconfig 命令找出您机器的 IPv4 地址。)例如,如果您的机器的 IPv4 地址是 192.168.1.100,那么您将添加该行

        192.168.1.100 本地主机

        到您的主机文件。 (您可以在文件中的“127.0.0.1 localhost”行下方添加它。)

        您可以使用netstat -b 命令验证 adb(以及您的模拟器,如果您正在运行的话)正在侦听端口。 (请注意,-b 选项需要管理员权限。我使用“以管理员身份运行”打开命令窗口。)

        【讨论】:

        • 对于 mac 和 linux?
        • @Xanlantos 你需要检查其他答案
        【解决方案8】:

        如果您使用的是 windows 操作系统,则在 tomcat 配置中替换行 Tomcat6\bin\startup.bat

        替换

        call "%EXECUTABLE%" start %CMD_LINE_ARGS%
        

        call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
        

        【讨论】:

          【解决方案9】:

          如果您需要调试在 Tomcat 上运行的应用程序,请确保您的 Tomcat-folder/bin/startup.bat(如果使用 Windows)包含以下行:

          set JPDA_TRANSPORT="dt_socket"
          set JPDA_ADDRESS=8000
          
          call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
          

          【讨论】:

            【解决方案10】:

            我在 Ubuntu 上运行 Tomcat 时遇到了问题。问题是 selinux 已启用,并且由于某种原因它不会让 Eclipse 连接到调试端口。禁用 selinux 或将其置于许可模式为我解决了这个问题。

            【讨论】:

              【解决方案11】:

              在我安装 Quicktime 并从类路径中删除 QTJava.zip 解决了问题后,我收到了 Weblogic 的此错误。

              https://blogs.oracle.com/adfjdev/entry/java_jre7_lib_ext_qtjava

              【讨论】:

                【解决方案12】:

                增加属性的内存值

                • MEM_PERM_SIZE_64BIT
                • MEM_MAX_PERM_SIZE_64BIT

                setDomainEnv.cmd 文件中来自%weblogic_home%\user_projects\domains\your_domain\bin

                【讨论】:

                  【解决方案13】:

                  我会再添加一个可能的解决方案,如果您在虚拟机(vmware 等)上运行它,主机或其他虚拟机上的其他进程可能已经拥有您尝试连接的端口.要么停止其他进程,要么选择其他端口。

                  【讨论】:

                    【解决方案14】:

                    以下内容对我有用:编辑 tomcat startup.sh 的最后一行来自

                    exec "$PRGDIR"/"$EXECUTABLE" start "$@"`
                    

                    export JPDA_ADDRESS=8000 export JPDA_TRANSPORT=dt_socket  
                    exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@" 
                    

                    【讨论】:

                      【解决方案15】:

                      从 Eclipse 中删除您的代理!

                      在 General Preferences ( Windows -> Preferences ) 中转到 network Connections 并将“Active Provider”设置为“Direct”

                      之后重启你的 Eclipse

                      【讨论】:

                      • 你还有这个问题吗?
                      • 这是在 Windows->首选项中
                      【解决方案16】:

                      对我有用的解决方案很奇怪

                      1. 只需删除所有断点
                      2. 在调试模式下重启 tomcat(使用 catalina.sh jpda start)
                      3. 现在尝试连接,它成功了!!!!

                      【讨论】:

                      • 它对我有用。首先需要启动catalina(所以只有它可以连接到端口)然后在eclipse中启动调试它会连接到jpda。谢谢
                      【解决方案17】:

                      在 Tomcat 的 nib 文件夹中创建 setenv.bat 文件。 添加 SET JPDA_ADDRESS = 8787 ;覆盖 jpda 端口 打开cmd,进入Tomcat的bin文件夹,使用catalina jpda start启动tomcat 在eclipse上设置调试点 接下来编译你的项目。 检查本地主机:8080/ 在 webapps 文件夹下部署 war 或 jar,这必须在 Tomcat 上部署 war。 然后发送请求。调试点将被命中 注意:不要编辑 catalina.bat 文件。修改 setenv.bat 文件

                      【讨论】:

                        【解决方案18】:

                        如果您使用的是 Jboss:

                        更改文件 jboss7.1.1\bin\standalone.conf.bat 中的这一行:

                        rem set "JAVA_OPTS=%JAVA_OPTS% -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
                        

                        到:

                        set "JAVA_OPTS=%JAVA_OPTS% -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
                        

                        【讨论】:

                          【解决方案19】:

                          我尝试了这里提到的几件事,但下面的方法对我有用:

                          转到 Eclipse 的调试控制台,您将在其中找到已经存在的进程的名称。 右键单击该进程并选择“终止并删除”,这将终止该进程。 现在尝试再次启动该过程,它将起作用。

                          【讨论】:

                            【解决方案20】:

                            在我的情况下,我将 Windows 防火墙 关闭

                            1- 通过单击开始按钮 打开 Windows 防火墙 开始按钮的图片,然后单击控制面板。在搜索框中,键入防火墙,然后单击 Windows 防火墙。

                            2- 单击打开或关闭 Windows 防火墙。需要管理员权限 如果系统提示您输入管理员密码或确认,请输入密码或提供确认。

                            3- 单击要停止尝试保护的每个网络位置下的关闭 Windows 防火墙(不推荐),然后单击确定。 这个页面有帮助吗?

                            有时你也需要

                            1. 停止所有 Vpn 客户端服务 (fortiClient ,vpn Client ...)
                            2. 停止防病毒防火墙(例如 Kaspersky => 配置 => 反黑客)

                            【讨论】:

                              【解决方案21】:

                              我在 Eclipse 中解决了它的设置:

                              Windows --> Preferences --> Java --> Debug --> Debugger timeout: 10000
                              

                              在我设置“Debugger timeout: 3000”之前,我遇到了超时问题。

                              【讨论】:

                              • 仍然收到“无法连接到远程虚拟机。连接被拒绝。”
                              【解决方案22】:

                              我正在使用 jboss,所以你的问题的解决方案是重新启动。

                              service jboss-portal restart
                              

                              【讨论】:

                                【解决方案23】:

                                我在 Hybris 也遇到过这种情况。

                                1. 在资源监视器 > 网络中检查您的端口。检查其他服务是否正在使用您的端口。

                                1.2 如果是,那么你需要在project.properties中更改你的属性

                                1.3 更改您的地址,任何可用地址。就我而言,我从 8000 更改为 8080。然后保存。

                                java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8080,suspend=n yourServer
                                
                                1. 在您的控制台中,使用命令“ant all”重建您的 ant

                                2. 然后再次调试,使用命令“hybrisserver.bat debug”

                                【讨论】:

                                  【解决方案24】:

                                  注意:对于 glassfish 服务器通过管理控制台登录 -> 配置 -> 服务器配置 -> JVM 设置。 * 记得勾选 Debug 的 Enable 复选框。现在 记下地址,这个地址将用于eclipse远程Java应用调试的端口。Check the snap shot in glassfish server here

                                  【讨论】:

                                    【解决方案25】:

                                    另一种可能性是调试代理绑定到错误的网络接口。

                                    我刚刚在尝试调试 VirtualBox VM 中的 Windows 10 JVM 时看到了这一点,并且我正尝试从 VirtualBox 主机上运行的 Eclipse 进行连接。就我而言,代理只绑定到127.0.0.1 接口。

                                    要修复,您可以限定address,包括您要绑定的接口的IP。例如:

                                    java -agentlib:jdwp=transport=dt_socket,server=y,address=192.168.0.5:8000,suspend=n <other arguments>
                                    

                                    【讨论】:

                                    • 正要添加同样的东西丹。我尝试调试的服务器有两个 NIC,而 jdwp 服务器绑定到错误的一个。通过显式设置address=xxx.xxx.xxx.xxx:8000,我可以正常连接。
                                    【解决方案26】:

                                    使用0.0.0.0 获取能够从任何远程机器连接的地址,即:

                                    -Xdebug -Xrunjdwp:transport=dt_socket,address=0.0.0.0:8000,server=y,suspend=y
                                    

                                    【讨论】:

                                    • 这似乎是最近的更改(JDK 9+)...如果您只指定端口,它将接受从任何 IP 到该端口的连接。现在,您需要手动指定 IP 或使用 0.0.0.0 如果您想连接任何东西。
                                    • 在下面为我修复它:openjdk 版本“1.8.0_232”OpenJDK 运行时环境 (AdoptOpenJDK)(build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09,混合模式)
                                    • 我希望这个答案更容易找到......我几乎放弃了尝试在 Raspberry Pi 上使用 Maven 配置远程调试。
                                    • 或者用*代替0.0.0.0
                                    猜你喜欢
                                    • 2014-07-31
                                    • 1970-01-01
                                    • 2012-03-26
                                    • 2014-03-13
                                    • 1970-01-01
                                    • 2016-07-11
                                    • 1970-01-01
                                    • 2013-11-07
                                    相关资源
                                    最近更新 更多