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

Enabling jdwp on a jdk 14 app results in Address family not supported by protocol error

对于 JDK 14 应用程序,运行 on linux,添加以下 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=trueJVM参数