java – 远程调试:在端口8787上没有连接到OpenJDK 11上的Wildfl
我正在尝试将我的调试器连接到在Open JDK 11上运行的Wildlfy.
尽管Wildfly说:
我的IDE(IntelliJ IDEA CE 2018.1)声称它没有任何连接:
我通过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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |