通过IntelliJ IDEA在Docker容器中远程调试Java 9

我有一个包含以下内容的Dockerfile:

FROM openjdk:9

WORKDIR /project

ADD . /project

EXPOSE 5005

我的docker-compose.yml看起来像这样:

version: "3.2"

services:

some-project:

build: .

ports:

- target: 5005

published: 5005

protocol: tcp

mode: host

command: "java '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005' SomeClass"

当我执行 我看到一条消息“正在 侦听地址为5005的传输dt_socket

”。但是,当我尝试与jdb或Idea连接时,出现“ java.io.IOException:握手失败-连接过早关闭 ”。

如果我将 更改为 则一切正常。但是,我的项目需要Java 9。

回答:

从Java

9开始,JDWP套接字连接器默认情况下仅接受本地连接。参见:http

:

//www.oracle.com/technetwork/java/javase/9​​-notes-3745703.html#JDK-8041435

因此,要从外部启用调试连接,请指定*:<port>为地址:

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

以上是 通过IntelliJ IDEA在Docker容器中远程调试Java 9 的全部内容, 来源链接: utcz.com/qa/426645.html

回到顶部