Ich habe einen Server mit DigitalOcean und eine JAR-Datei, die ich debuggen möchte. Ich starte zuerst den JAR auf dem Remote-Server mit
Java -jar Server.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
aber auf der Konsole sehe ich keine Ausgabe wie "Port 5005 abhören ...".
Wenn ich in IntelliJ Debug drücke, heißt es
debugger-Port kann nicht geöffnet werden (198.xxx.xxx.xx: 5005): Java.net.ConnectException "Verbindung abgelehnt"
Dies ist meine IntelliJ-Konfiguration:
Ich habe auch versucht, -Xdebug
zu verwenden, aber es hat immer noch nicht funktioniert.
Wenn ich suspend=y
setze, sollte es warten, bis ein Debugger angeschlossen ist. Stattdessen wird es ohne Probleme gestartet.
Der Befehl zum Starten des Remote-Java-Prozesses im Debug-Modus sieht korrekt aus. Wenn beim Starten der Server-JAR "Listening to Port blah" nicht angezeigt wird, kann dies bedeuten, dass die Debug-Argumente nicht erkannt werden. Eine andere Möglichkeit, dies schnell zu überprüfen, wäre ein Test mit einem telnet localhost 5005
auf dem Rechner, auf dem die Server-JAR ausgeführt wird. Die telnet
schlägt fehl, wenn dieser Port nicht verwendet wird.
Ich schlage vor, dass Sie Folgendes versuchen, da die Reihenfolge der Parameter von Bedeutung sein kann (ich werde später einige offizielle Beweise hinzufügen):
Java "agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" -jar Server.jar
Dieser Befehl hat für mich funktioniert:
Java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar Server.jar
dieser Befehl hat für mich funktioniert:
export Java_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5505'
standardmäßig schlägt der Remote-Dialog Folgendes vor:
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
Ändern Sie es in:
'agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005'
und gibt port 5005 aus.
In meinem Fall lag es daran, dass unter Einstellungen -> Build, Ausführung, Bereitstellung -> Debugger ein eingebauter Server auf demselben Port ausgeführt wurde, an den ich aus irgendeinem Grund meinen Debugger anhängen wollte.