java - 远程调试:OpenJDK 11 上的 Wildfly 14 在端口 8787 上没有连接
问题描述
我正在尝试将我的调试器连接到在 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 的评论后更新netstat -ln
:在运行 Wildfly 的服务器上显示:
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。
解决方案
对于 jdk 11,你应该使用
-agentlib:jdwp=transport=dt_socket,address=*:8787,server=y,suspend=n
反而。
推荐阅读
- ruby - `render':使用 jekyll 多语言插件时未定义的方法 `access'
- jquery - 使用 jquery 对每个产品在 laravel 8 中进行的 2 个输入的值求和
- java - Android WebView 不支持 Web Speech API
- python-3.x - 将 xlsxwriter 格式应用于 AWS lambda 函数中的 Excel 文件
- list - UL 列表不响应设备
- node.js - 遵循教程但得到:Router.use() 需要一个中间件函数但得到一个对象
- java - 如何正确添加此字段?
- algorithm - 寻找三次 B 样条基函数最大点的优雅算法?
- python - 读取块中的bin文件并找出python中的特定值
- vhdl - 在 VUnit 中测试断言失败