Frage

Ich weiß, wie ich einen Remote-Java-VM mit Eclipse debuggen kann, aber wie kann ich es mit einem Java-Web-Start-Programm. Ich habe ein Problem, das in Java Web Start erfolgt nur. Es muss Sicherheit.

Ich brauche eine Lösung, die mit einem aktuellen Java-VM wie 1.6.0_12 funktionieren wird.

War es hilfreich?

Lösung

Es ist ziemlich die gleiche wie bei jedem anderen Java-Prozess, den Sie remote debuggen mögen: Sie haben einige Argumente für die VM (-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345 ) einzurichten und dann zu dem angegeben Port zu verbinden. In Java webstart 6.0 kann dies mit der Option -J erfolgen, in früheren Version über Umgebungsvariable JAVAWS_VM_ARGS. Details sehen hier .

Andere Tipps

Starten Sie manuell die JWS VM. Auf diese Weise können Sie die Startparameter bieten den Debug-Port zu öffnen. Hier ist ein Beschreibung , geht es wie folgt aus:

set JAVAWS_TRACE_NATIVE=1
set JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=n"
javaws http://server:port/descriptor.jnlp

Wie bei neueren Versionen von Java (Java 8u20 + und Java 7u70 +) i erlebt, dass Parameter wie -Xrunjdwp nicht direkt noch mit JAVAWS_VM_ARGS weitergegeben werden. Botschaft Rejecting attempt to specify insecure property: -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 begann im Konsolenausgabe zu zeigen.

Die einzige Lösung, die für mich gearbeitet wurde diese Argumente in JAVA_TOOL_OPTIONS Systemvariable zu übergeben.

Sie können auch die Debug-Parameter an den javaws ausführbaren bieten die Option -J mit

Beispiel:

javaws.exe -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 http://server:port/descriptor.jnlp

Sie müssen folgendes tun:

  1. Aktivieren Sie die Java-Protokolle und in der Java-Systemsteuerung> Erweiterte Tracing. Java Control Panel: Protokolle und Tracing

  2. Aktivieren Parameter für das Debuggen von Java (optional, aber nützlich heißt Probleme mit TLS / SSL-Handshake als close_notify oder handshake_failure) und dem Start der JNLP, gibt es zwei Möglichkeiten, wie Sie es tun können:

    2.a. Laden Sie die JNLP-Datei und führen Sie es von der Kommandozeile (der SET Befehl wird nicht in diesem speziellen Fall erforderlich).

    set JAVA_TOOL_OPTIONS=-Djavax.net.debug=all
    javaws -wait jnlp.jnlp
    

    2.b. In Argumenten (das heißt -Djavax.net.debug=all) für die JVM in der Java-Systemsteuerung> Java> Ansicht (dies nicht in diesem speziellen erforderlich ist), und starten Sie die JNLP-Datei von Browser:

  3. Die Protokolle und Spuren werden im log Verzeichnis aus dem Java Deployment Startseite von wo ich fügen diese Orte:

    a. Windows XP: %HOME%\Application Data\Sun\Java\Deployment

    b. Windows 7 / Vista: %APPDATA%\..\LocalLow\Sun\Java\Deployment

    c. Linux / Solaris: %HOME%/.java/deployment

Mit javax.net.debug = all werden Sie den Handshake sehen, ob das Glas im Inneren des jnlp von einer https-Verbindung geladen wird. Diese Art von Problemen sind schwer zu debuggen.

...
%% No cached client session
*** ClientHello, TLSv1.2
...
***
... 
Java Web Start Main Thread, received EOFException: error
Java Web Start Main Thread, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Java Web Start Main Thread, SEND TLSv1.2 ALERT:  fatal, description = handshake_failure
Java Web Start Main Thread, WRITE: TLSv1.2 Alert, length = 2
Java Web Start Main Thread, called closeSocket()
#### Java Web Start Error:

Mit Java 8 und Windows 10, öffnen Eingabeaufforderung (cmd.exe) und geben Sie diese:

set JAVAWS_TRACE_NATIVE=1
set JAVA_TOOL_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
javaws java-app.jnlp

Haben Sie versucht, das Drucken eines Debug-Protokoll? Das ist eine nützliche Sache auf jeden Fall haben, und könnte in diesem Fall helfen.

Wenn Sie echtes Debuggen möchten, finden Sie zum Beispiel Hier: Wie kann ich debuggen unter WebStart?

ein Web-Anwendung startet in Linux zu debuggen, ein Shell-Skript ~ / ist / javaws-debug.sh mit dem javaws Aufruf im Debug-Modus erstellen, wie oben beschrieben:

~ / bin / javaws-debug.sh:

#!/bin/sh
export JAVAWS_TRACE_NATIVE=1
export JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Djava.compiler=NONE 
  -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=n"
javaws "$@"

Dann in Ihrem Browser, wählen Sie das Skript als die Anwendung auf jnlp Dateien aufzurufen.

Zum Beispiel in Firefox, gehen → Einstellungen → Anwendungen zu bearbeiten, Content Type: Java Web Start, und "Use Andere" in Aktion wählen und das Skript aus dem "Select Helper Application" Dialog auswählen. In Chrome, müssen Sie Linux-System-Einstellungen ändern. In KDE gehen → Dateizuordnungen zu Systemeinstellungen, Bekannte Typen: Anwendung: x-java-jnlp-Datei, eine neue Anwendung hinzufügen, wählen Sie ~ / bin / javaws-debug.sh aus der „Anwendung wählen für application / x-java -jnlp-Datei“Dialog.

Wenn der Browser konfiguriert ist, Java Web Start Anwendung starten Sie Ihre Wrapper, der Debugger auf Port 8989 verbinden ermöglichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top