Eclipse を使用してリモート Java VM をデバッグする方法は知っていますが、Java Web Start プログラムを使用してそれを行うにはどうすればよいでしょうか。Java Web Start でのみ発生する問題があります。セキュリティ関連である必要があります。
1.6.0_12 のような現在の Java VM で動作するソリューションが必要です。
Eclipse を使用してリモート Java VM をデバッグする方法は知っていますが、Java Web Start プログラムを使用してそれを行うにはどうすればよいでしょうか。Java Web Start でのみ発生する問題があります。セキュリティ関連である必要があります。
1.6.0_12 のような現在の Java VM で動作するソリューションが必要です。
リモートでデバッグする他の Java プロセスとまったく同じです。VM ( -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345
) にいくつかの引数を設定してから、指定されたポートに接続する必要があります。Java webstart 6.0 では、これは -J オプションで実行できます。以前のバージョンでは、環境変数 JAVAWS_VM_ARGS を介して実行できます。詳細はこちらをご覧ください。
JWS VM を手動で起動します。このようにして、デバッグ ポートを開くためのスタートアップ パラメーターを指定できます。ここに説明があります。次のようになります。
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
次のことを行う必要があります。
Java をデバッグするためのパラメーターを有効にします (オプションですが便利です。つまり、close_notify または handshake_failure としての tls/ssl ハンドシェイクの問題) & JNLP を起動するには、次の 2 つの方法があります。
2.a. JNLP ファイルをダウンロードし、コマンド ラインから実行します (SET
この場合、コマンドは必要ありません)。
set JAVA_TOOL_OPTIONS=-Djavax.net.debug=all
javaws -wait jnlp.jnlp
2.b. -Djavax.net.debug=all
[Java コントロール パネル] > [Java] > [表示] で JVM の引数 (つまり ) を追加し (これは、この特定のケースでは必要ありません)、ブラウザから JNLP ファイルを起動します。
ログとトレースは、次の場所を貼り付けたJava Deployment Homelog
のディレクトリにあります。
を。Windows XP:%HOME%\Application Data\Sun\Java\Deployment
b. ウィンドウズ 7/ビスタ:%APPDATA%\..\LocalLow\Sun\Java\Deployment
c. Linux/Solaris:%HOME%/.java/deployment
javax.net.debug=all を使用すると、jnlp 内の jar が https 接続からロードされた場合にハンドシェイクが表示されます。この種の問題はデバッグが困難です。
...
%% 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:
Linux で Web Start アプリケーションをデバッグするには、上記のようにデバッグ モードで javaws を呼び出してシェル スクリプト ~/bin/javaws-debug.sh を作成します。
~/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 "$@"
次に、ブラウザで、jnlp ファイルで呼び出すアプリケーションとしてそのスクリプトを選択します。
たとえば、Firefox では、[編集] → [設定] → [アプリケーション] の [コンテンツ タイプ: Java Web Start] に移動し、[アクション] で [その他を使用] を選択し、[ヘルパー アプリケーションの選択] ダイアログからスクリプトを選択します。Chrome では、Linux システム設定を変更する必要があります。KDE で、[システム設定] → [ファイルの関連付け]、[既知のタイプ] に移動します: application:x-java-jnlp-file、新しいアプリケーションを追加し、[application/x-java のアプリケーションを選択] から ~/bin/javaws-debug.sh を選択します。 -jnlp-file」ダイアログ。
ブラウザーが構成されると、Java Web Start アプリケーションがラッパーを使用して開始され、デバッガーがポート 8989 で接続できるようになります。
デバッグログを印刷しようとしましたか? いずれにせよ、これは便利な機能であり、この場合に役立つ可能性があります。
実際のデバッグが必要な場合は、たとえばここを参照してください: How can I debug under WebStart?