我正在开发一个 Java 10 应用程序,该应用程序使用嵌入式 Jetty 服务器提供来自本地网络的控制,并且我尝试连接到 JVM 但失败。它在 Ubuntu 18.04 LTS 桌面上运行。
我的启动脚本包含以下几行:
java -Xdebug -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -Djava.library_path=${LIB_PATH} -classpath ${CP} -jar ${APP_DIR}/app.jar
我的系统上有 ufw,并且我已验证该端口已打开。我的 ufw status 输出包括:
8000 ALLOW Anywhere
8000 (v6) ALLOW Anywhere
在 IntelliJ 中,我的调试配置是
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
当我尝试连接时,收到连接被拒绝的错误消息。
在配置的地址框中使用机器的 IP。
查看 netstat -l 的输出,我看到以下内容:
tcp 0 0 localhost:8000 0.0.0.0:* LISTEN
这是否意味着调试器仅监听本地主机上的连接?我需要做些什么才能让它在网络上监听吗?
最佳答案
所以我很快就找到了答案。我需要修改服务器使用的行,使其显示为:
java -Xdebug -agentlib:jdwp=transport=dt_socket,address=*:8000,server=y,suspend=n -Djava.library_path=${LIB_PATH} -classpath ${CP} -jar ${APP_DIR}/app.jar
这就是监听所有接口(interface)。
关于java - 无法连接到远程 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52554492/