OS
Windows 10 64bit
Java
> java --version
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)
Ordnerstruktur
> tree /f
├─build
│ └─classes
│ └─java
│ └─main
│ Hoge.class
└─src
└─main
└─java
Hoge.java
Hoge.java
class Hoge {
public static void main(String... args) {
System.out.println("Hello World");
}
}
Fügen Sie beim Debuggen eines Java-Programms mit Eclipse den Startoptionen den folgenden Spruch hinzu.
> java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y -cp build\classes\java\main Hoge
Vor Java 9 konnten Sie den Debugger auf diese Weise remote mit dem 8000-Port verbinden (natürlich müssen Sie den Port offen halten).
Wenn ich jedoch in Java 9 oder höher versuche, eine Verbindung zu einer JVM herzustellen, die mit dieser Option remote mit einem Debugger gestartet wurde, wird der folgende Fehler angezeigt.
JDK 9 Release Notes | Notes and Changes
JDWP socket connector accept only local connections by default The JDWP socket connector has been changed to bind to localhost only if no ip address or hostname is specified on the agent command line. A hostname of asterisk (*) may be used to achieve the old behavior which is to bind the JDWP socket connector to all available interfaces; this is not secure and not recommended.
Wenn Sie in Java 9 keinen Host angeben, wird dieser automatisch an "localhost" gebunden, und es scheint, dass Sie keine Remoteverbindung mehr herstellen können.
Um wie zuvor eine Verbindung von einer beliebigen Fernbedienung aus herstellen zu können, können Sie dies mit *
like address = *: 8000
tun.
(Es scheint jedoch, dass es nicht empfohlen wird, da es nicht gut für die Sicherheit ist [^ 1])
[^ 1]: Bei der Verbindung mit dem Debugger handelt es sich um eine Nicht-Produktionsumgebung. Ich glaube, Sie müssen sich darüber keine Sorgen machen. e? Verbinden Sie die Produktion mit dem Debugger? Ahh
> java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=*:8000,suspend=y -cp build\classes\java\main Hoge
in Verbindung gebracht.
Recommended Posts