在JDK 14应用程序上启用jdwp会导致协议不支持的地址簇错误。

7
针对在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。有人有什么想法可以帮忙吗?是一个错误还是一种特性,我似乎找不到相关的文档。

3
默认情况下,jdwp代理尝试绑定到[::]。显然,您的系统不支持IPv6。请尝试使用0.0.0.0:5005,或者添加-Djava.net.preferIPv4Stack=true JVM选项。 - apangin
1个回答

11

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接