在 jdk 14 应用程序上启用 jdwp 会导致协议错误不支持地址系列

MrP*_*low 8 java remote-debugging jdwp

对于在 Linux 上运行的 JDK 14 应用程序,添加以下 JVM 参数

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

结果出现以下错误

Starting Main...
ERROR: transport error 202: socket creation failed: Address family not supported by protocol
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [open/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c:734]
Run Code Online (Sandbox Code Playgroud)

将地址从 更改为*:5005似乎localhost:5005可行,但它仅绑定到本地主机。我知道在 JDK 12 上有效的事实*:5005,但我找不到任何与此相关的更改,事实上 JPDA 规范仍然提到了*jse 14 的选项https://docs.oracle.com/en/java/javase/14/文档/规格/jpda/conninv.html。有人知道我可以研究什么吗?这是一个错误还是一个我似乎找不到文档的功能。

MrP*_*low 12

正如 @apangin 在评论中建议的那样。解决办法是指定地址0.0.0.0:5005或者设置-Djava.net.preferIPv4Stack=trueJVM参数。