无法连接到远程JVM

时间:2018-09-28 11:36:11

标签: java embedded-jetty

我正在开发一个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状态获得的输出包括:

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

这是否意味着调试器仅监听本地主机上的连接?我需要做些什么才能使其在网络上收听吗?

2 个答案:

答案 0 :(得分:1)

问题出在这一行:

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

地址应该是端口号(如果在本地计算机上)和主机名:端口号(如果连接到远程计算机)。在地址中删除了“ *:”,它应该可以正常工作。

答案 1 :(得分:0)

所以我很快找到了答案。我需要修改用于服务器的行,使其显示为:

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

所以它在所有接口上监听。