我正在尝试在 Intellij v2020.1 中设置远程调试器,但不断收到以下错误:
无法打开调试器端口(localhost:5005):java.io.IOException“握手失败 - 连接过早关闭”
在我的 docker compose 文件中,我已将端口 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,添加到模块类路径中,并在启动前步骤中添加到我的 compose 文件中。
服务启动正常,但无法连接到调试器,有什么想法吗?
将这一行放入我的 Dockerfile 中为我解决了这个问题:
ENV JAVA_TOOL_OPTIONS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
这里的关键部分是“address=*:5005”和not只需“地址=5005”。显然,自从 Java 9 需要在端口之前添加 *: 以来,一些安全性发生了变化。
编辑:我看到你在 Java 8 上。但也许添加-XDebug选项也可以做到这一点:
ENV JAVA_TOOL_OPTIONS -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)