我有一台运行在DigitalOcean上的服务器和一个我想要调试的JAR文件。我首先使用
在远程服务器上启动JARjava -jar Server.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
但在控制台上我看不到像“侦听端口5005 ......”这样的输出。
当我在IntelliJ中按下调试时,它说
无法打开调试器端口(198.xxx.xxx.xx:5005): java.net.ConnectException“连接被拒绝”
我也尝试使用-Xdebug
,但它仍然无效。
如果我设置suspend=y
它应该等到连接调试器,而是启动它没有问题。
答案 0 :(得分:9)
在调试模式下启动远程Java进程的命令看起来是正确的。如果在启动服务器JAR时没有看到“Listeing to Port blah”,那么可能意味着调试args没有被选中。另一种快速检查方法是在正在执行服务器JAR的机器上使用telnet localhost 5005
进行测试。如果没有使用该端口,telnet
将失败。
我建议您尝试以下操作,因为参数的顺序可能很重要(我稍后会添加一些官方证据):
java "agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" -jar Server.jar
答案 1 :(得分:2)
这个命令对我有用:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar Server.jar
答案 2 :(得分:2)
此命令对我有用:
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5505'
默认情况下,想法远程对话框建议:
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
将其更改为:
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005'
并发出端口5005。
答案 3 :(得分:0)
在我的情况下,这是因为在设置下 - >构建,执行,部署 - >调试器我有一个内置服务器运行在同一个端口上,因为某些原因我试图连接我的调试器。
答案 4 :(得分:0)
感谢suifengpiao14,但我将更详细地描述问题。
我检查了很多事情,最后发现了原因:实际上,就像一个宁静的服务一样,我们希望从服务器外部对其进行访问,我们正在运行它,我们应该将0.0.0.0设置为nameserver,在这里我们应该做一个类似的。 我检查了可以远程调试的服务器与不能远程调试的服务器之间的区别。使用 netstat 命令:
对于我认为可以的服务器:
tcp 0 0 0.0.0.0:5005 0.0.0.0:* LISTEN 8323/java
对于我遇到问题的服务器:
tcp 0 0 127.0.0.1:5005 0.0.0.0:* LISTEN 8323/java
因此,使用以下jvm选项应该会有所帮助:
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005'
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005'