无法通过IntelliJ打开调试器端口

Leo*_*do 11 java debugging remote-debugging jar intellij-idea

我有一台运行在DigitalOcean上的服务器和一个我想要调试的JAR文件.我首先在远程服务器上启动JAR

java -jar Server.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Run Code Online (Sandbox Code Playgroud)

但是在控制台上我看不到像"侦听端口5005 ......"这样的输出.

当我在IntelliJ中按下调试时,它说

无法打开调试器端口(198.xxx.xxx.xx:5005):java.net.ConnectException"Connection refused"

这是我的IntelliJ配置:
在此输入图像描述

我也试过使用-Xdebug但它仍然没有用.

如果我设置suspend=y它应该等到调试器连接,但相反,它启动没有问题.

Ash*_*dal 11

在调试模式下启动远程Java进程的命令看起来是正确的.如果在启动服务器JAR时没有看到"Listeing to Port blah",那么可能意味着调试args没有被选中.快速检查这一点的另一种方法telnet localhost 5005是在正在执行服务器JAR的机器上进行测试.telnet如果未使用该端口,则将失败.

我建议您尝试以下方法,因为参数的顺序可能很重要(我稍后会添加一些官方证据):

java "agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" -jar Server.jar
Run Code Online (Sandbox Code Playgroud)

  • 官方证据在哪里?咦?咦?玩笑. (3认同)
  • 我只想强调参数*的顺序无关紧要的事实. (2认同)

小智 10

这个命令对我有用:

export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5505'
Run Code Online (Sandbox Code Playgroud)

默认情况下,idea 远程对话框建议:

'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
Run Code Online (Sandbox Code Playgroud)

将其更改为:

'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005'
Run Code Online (Sandbox Code Playgroud)

并发布端口 5005。

  • 救星!谢谢。我花了一个小时尝试不同的配置,我所缺少的只是端口之前的“0.0.0.0”部分 (2认同)

小智 5

这个命令对我有用:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar Server.jar 
Run Code Online (Sandbox Code Playgroud)