Eclipse:连接远程虚拟机失败。连接被拒绝。

35

每当我尝试启动我的Eclipse调试(用于服务器端代码)时,都会出现以下错误无法连接到远程虚拟机。连接被拒绝。

可能是什么问题?我已经尝试了网络上的大多数解决方案,但没有一个能解决我的问题。有人可以帮助我解决吗?提前感谢。


你应该添加启动服务器VM的命令行,特别是调试参数。此外,关于客户端和服务器端使用的操作系统的详细信息也会很好。 - Robert
您是否正在连接到远程服务器?如果是,可能会出现防火墙问题等。如果您在自己的计算机上运行服务器代码,则我无从得知。我同意@Robert的看法,更多信息将会很有用。 - JHollanti
8个回答

41
当您连接远程VM失败时出现“连接被拒绝”错误,请重新启动您的Eclipse

8
重新启动服务器 - Atul
是的,我刚刚添加了配置设置,但在重启之前它并没有起作用。 - Daniel Williams
1
重启 Eclipse 成功了 !!! - VijayD
1
是的,这很令人沮丧,但它能够工作。 - tuan.dinh
1
@AgilePro,如果我们能够看到Eclipse的内部实现以了解正在发生的变化,那将是很酷的。 - committedandroider
显示剩余5条评论

40

你使用的是哪个服务器?

如已经提到:

  1. 在调试配置中,你需要定义服务器的正确端口(GF:9009 / Tomcat:8000)
  2. 你需要将服务器的JVM属性设置为debug

对于Glassfish:

    Log in to admin-console > Configurations > server-config > JVM-Settings > check DEBUG checkbox > restart server

对于Tomcat:

%TOMCAT_HOME%/bin目录下创建debug.bat/.sh(根据您的操作系统而定)文件并编写以下内容:

    set JPDA_ADDRESS=8000
    set JPDA_TRANSPORT=dt_socket
    catalina.bat jpda start

在创建了这个文件之后,执行debug.bat/.sh启动服务器。

现在,在设置调试配置中所需的属性之后,您应该能够在Eclipse中进行远程调试。

希望这能帮到你!玩得开心!

编辑

如果你在Win环境下将tomcat作为服务运行,则在tomcat安装的bin目录下没有文件。
要将服务器设置为调试模式,请尝试以下操作:

  1. 在Windows菜单中运行“Configuration”选项或运行%catalina_home%/bin/tomcat6w.exe
  2. 在Java选项卡中,添加此行到Java:

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


我已经在Tomcat7的bin文件夹中创建了debug.bat文件,并添加了以下内容: set JPDA_ADDRESS=8000 set JPDA_TRANSPORT=dt_socket catalina.bat jpda start如何通过执行debug.bat启动服务器?当我双击它时,它会立即自动关闭。 - Gopakumar N G
@GopakumarNG 没错,你的 shell 应该在完成后自动关闭,但它应该打开一个新的显示 tomcat 服务的 shell。请确保在你的 debug.bat 中没有任何拼写错误,特别是在 catalina.bat jpda start 部分。 - SimonSez
@SimonSez 在 debug.bat 文件中没有拼写错误。但是在 Tomcat 的 bin 目录中没有 catalina.bat 文件,我正在使用 apache-tomcat-7.0.40 版本。这会引起任何问题吗? - Gopakumar N G
@SimonSez 我已经下载了压缩文件并将catalina.bat复制到bin目录。现在,当我点击debug.bat时,它只是打开并显示“错误的版本号”,然后自动关闭。 - Gopakumar N G
@SimonSez 我正在使用CentOS,并想以调试模式运行tomcat 8.0.12。当我运行debug.sh文件时,出现错误“debug.sh:第3行:catalina.bat:找不到命令”。我可以看到catalina.bat在那里。只是说,我应该将第三行替换为“catalina.bat jpda start”,因为我正在运行CentOS吗? - Saad Qureshi
显示剩余5条评论

6
有时候你想要访问的端口被占用了,无法释放。可以尝试使用一些工具来查找这个端口是否正在被使用。我也遇到过相同的问题。我尝试使用不同的端口号,但很遗憾并没有起作用。最后,我尝试重新启动操作系统(而不是应用服务器),然后问题就解决了 :)

啊,我在8000端口上运行了另一个Web服务器。 - Hari Menon

4

我遇到了同样的问题,但是我通过更改端口号解决了它。


3
  • 在Eclipse配置中的端口号和您的应用程序的端口号可能不同。
  • 您可能没有使用正确的参数启动应用程序。

    这些是我遇到“连接被拒绝”错误时遇到的简单问题。


1
谢谢你的回答,帮助了我。我在没有启动应用程序的情况下进行调试。 - Mateen
我遇到了运行配置错误,因此服务器很快就结束了,虚拟机也没有连接。 - Andrew

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

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

你可以考虑标记重复项,而不是添加重复的答案。 - bummi

1
正如suat所说,连接被拒绝大多是因为你设置的端口已被占用,或者在Eclipse中远程应用程序调试配置中使用的端口号与地址属性中使用的端口号不同。
-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n.

检查这些东西。谢谢!

0
我在调试Play框架2.x版本时遇到了这个问题,结果发现服务器尽管已经发出了play debug run命令,但并未启动。在第一次请求Web服务器后,Play框架真正开始在9000端口上启动应用程序,然后我才能够从Eclipse正确连接到9999调试端口。
[info] play - Application started (Dev)

当上面的消息出现时,控制台中显示了上面的文本,说明为什么在第一个http请求之前eclipse无法连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接