javaws http://server_name_or_ip/jnlpfile.jnlp (JNLP-Datei der Anwendung aufrufen)
Das funktioniert auf den ersten Blick auch ganz gut. Die Anwendung wird geladen, gestartet und man kann sich mittels Eclipse damit verbinden und sieht die Threads der Anwendung. Jetzt kommt das Problem: Man möchte fröhlich drauf los debuggen, plötzlich wird die Verbindung beendet. Was ist passiert? Man hat den JNLP-Launcher debugged. Er beendet sich und startet die eigentliche Anwendung. Die weiss leider nichts davon, dass man sie gerne debuggen möchte.
In diesem Fall wird mit Java 6 u 45 gearbeitet. Ähnliche Probleme scheint es aber auch mit Java 7 zu geben.
Was tun? Alle Tipps, die ich finden konnte funktionierten nicht: z.B. die -Xnofork Option. Oder die Argumente mittels javaws -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 zu übergeben.
Irgendwo hatte ich gelesen, dass bestimmte Java-Optionen (z.B. Debug-Optionen!) wenn sie im JNLP-File stehen von JWS ausgefiltert werden. Sollte dies tatsächlich das Problem sein?
Ein Blick in die JNLP-Datei offenbarte die folgende Zeile:
<j2se version="1.6.0_07+" java-vm-args="-Xss512K" initial-heap-size="128m" max-heap-size="512m" href="http://java.sun.com/products/autodl/j2se"/>
Nachdem ich sie wie folgt abgeändert hatte funktioniert auch das debuggen: <j2se version="1.6.0_07+" href="http://java.sun.com/products/autodl/j2se"/>
Fazit: Scheinbar werden die Java-Optionen von JAVAWS_VM_ARGS irgendwo mit denen aus der JNLP-Datei gemerged und dann ausgefiltert! Natürlich nur dann, wenn in der JNLP-Datei Java-Optionen stehen. Entfernt man also alle Optionen, die zu "-X" Optionen übersetzt werden können aus der JNLP-Datei läuft es erwartungsgemäß. Grummel.