在jdk 14应用程序上启用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]

将地址从*:5005更改为localhost:5005似乎可行,但是仅绑定到本地主机。我知道*:5005是在JDK 12上工作的,对此我找不到任何变化,实际上JPDA规范仍然提到jse 14 https://docs.oracle.com/en/java/javase/14/docs/specs/jpda/conninv.html*选项。有人对我有什么想法吗?是我似乎找不到其相关文档的错误还是功能

解决方法

如@apangin在评论中所建议。解决方案是将地址指定为0.0.0.0:5005或设置-Djava.net.preferIPv4Stack=true JVM参数。