无法连接到远程VM。拒绝连接。同时调试jar

时间:2012-06-14 05:20:44

标签: eclipse debugging remote-debugging

我正在尝试使用Remote JAVA Application debug调试jar文件。 我收到'无法连接到远程VM。拒绝连接。'错误 以下是堆栈跟踪..

java.net.ConnectException:拒绝连接:连接     at java.net.DualStackPlainSocketImpl.connect0(Native Method)     在java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)     在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)     在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)     在java.net.Socket.connect(Socket.java:579)     在java.net.Socket.connect(Socket.java:528)     在java.net.Socket。(Socket.java:425)     在java.net.Socket。(Socket.java:208)     在org.eclipse.jdi.internal.connect.SocketTransportService $ 2.run(SocketTransportService.java:136)     在java.lang.Thread.run(Thread.java:722)

5 个答案:

答案 0 :(得分:2)

您是否记得在要连接的JVM上启用调试?当您运行远程JVM时,这是通过JAVA_OPTS完成的。

例如,要向tomcat添加调试,您可以在启动java进程时添加这些JAVA_OPTS:

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

答案 1 :(得分:0)

如果其他人正在观察此行为并检查了其Java命令行参数,端口号和主机名,则可以通过重新启动Eclipse来解决此问题。

答案 2 :(得分:0)

请确保在引用Java程序之前添加调试标志,否则它们将传递给程序本身而不是Java。

此外,Eclipse有时可能很奇怪,并且在运行“调试配置”时它不会自动切换到“调试”透视图。建立成功的调试会话后,如果再次运行它以为它没有运行和/或以静默方式失败,则会收到错误消息:“无法连接到远程VM。连接被拒绝。”因此,请始终切换到“调试”透视图以查看发生了什么。

答案 3 :(得分:0)

对于最新版本的java,参数应该是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=XXXX

(暂停可以是 y 或 n,具体取决于您是否希望 Java 进程在执行程序之前等待直到附加调试器)。

答案 4 :(得分:0)

我不确定这有多普遍,但是...
(在名为“tahoeServer”的树莓派上运行 openjdk 14+36)

您必须告诉 JVM 使用哪个接口。如果你只是说

-agentlib:jdwp=transport=dt_socket,server=y,address=4445

然后 JVM 将侦听 'localhost' 接口并且不允许真正的远程调试。但是,如果你说

-agentlib:jdwp=transport=dt_socket,server=y,address=tahoeServer.local:4445

将允许来自远程机器的连接。

同样,我不知道这是否适用于其他版本的 JVM 或其他操作系统。