我正在开发一个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
这是否意味着调试器仅监听本地主机上的连接?我需要做些什么才能使其在网络上收听吗?
答案 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
所以它在所有接口上监听。