加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 远程调试:在端口8787上没有连接到OpenJDK 11上的Wildfl

发布时间:2020-12-15 08:27:55 所属栏目:Java 来源:网络整理
导读:我正在尝试将我的调试器连接到在Open JDK 11上运行的Wildlfy. 尽管Wildfly说: Listening for transport dt_socket at address: 8787 我的IDE(IntelliJ IDEA CE 2018.1)声称它没有任何连接: Unable to open debugger port (localhost:8787): java.io.IOExce
我正在尝试将我的调试器连接到在Open JDK 11上运行的Wildlfy.

尽管Wildfly说:

Listening for transport dt_socket at address: 8787

我的IDE(IntelliJ IDEA CE 2018.1)声称它没有任何连接:

Unable to open debugger port (localhost:8787): java.io.IOException "handshake failed - connection prematurally closed".

我通过standalone.sh –debug启动Wildfly,产生以下JAVA_OPTS:

-server
-Xms64m
-Xmx512m
-XX:MetaspaceSize=96M
-XX:MaxMetaspaceSize=256m
-Djava.net.preferIPv4Stack=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djava.awt.headless=true
-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED
--add-modules=java.se

Java 9/10/11中有什么变化吗?使用Oracle JDK 8时,使用完全相同的设置进行远程调试可以正常工作.

使用telnet我可以确认,端口8787确实无法访问.

阅读@ ehsavoie的评论后更新:运行Wildfly的服务器上的netstat -ln显示:

Proto Recv-Q Send-Q Local Address           Foreign Address         State   
tcp        0      0 127.0.0.1:8787          0.0.0.0:*               LISTEN

显然,使用OpenJDK 11,调试端口现在默认绑定到localhost.

解决方法

原因在于根据 this answer在Java 9中更改的默认行为:从Java 9开始,除非另有说明,否则JVM仅接受本地连接.

因此解决方案相当容易:

使用Java 8时,使用–debug启动Wildfly就足够了,使用Java 9我需要将其更改为–debug *:8787.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读