Intellij调试Docker容器一直给我IO异常握手失败



我正试图在Intellij v2020.1中设置远程调试器,我一直收到以下错误:

无法打开调试器端口(localhost:5005(:java.io.IOException"握手失败-连接提前关闭";

在我的docker撰写文件中,我已经安装了端口5005到5005

在我的docker文件中,我有:

EXPOSE 5005

ENTRYPOINT ["/bin/bash", "runme.sh"]

在我的shell脚本中,我有:

/opt/java/openjdk/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar mine.jar

当我做docker ps时,我可以看到以下内容:

0.0.0.0:5005->5005/tcp, 0.0.0.0:8111->8111/tcp

在IntelliJ中,我将远程调试器从端口5005设置到控制端口5005,添加到模块clapath中,并在启动前步骤中添加到我的撰写文件中。

服务启动良好,但无法连接到调试器,有什么想法吗?

将这一行放在Dockerfile中为我解决了问题:

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

这里的关键部分是";地址=*:5005";并且而不是简单地";地址=5005";。显然,自Java 9以来,一些安全性更改要求在端口之前使用*。

编辑:我看你在用Java 8。但是,也许在选项中添加-XDebug也可以做到这一点:

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

最新更新