简体   繁体   中英

Remote debugging Java 9 in a docker container from IntelliJ IDEA

I have a Dockerfile with this content:

FROM openjdk:9

WORKDIR /project

ADD . /project

EXPOSE 5005

My docker-compose.yml looks like this:

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"

When I do docker-composer up I see a message " Listening for transport dt_socket at address: 5005 ". But when I try to connect with jdb or Idea I get " java.io.IOException: handshake failed - connection prematurally closed ".

Everything works fine if I change openjdk:9 to openjdk:8 . However, I need Java 9 for my project.

From Java 9, the JDWP socket connector accept only local connections by default. See: http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

So, to enable debug connections from outside, specify *:<port> as address:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM