リモートをデバッグする方法を知っていますJava VM Eclipseで、しかしどのようにJava Webプログラムを開始します。Java Web Startでのみ発生する問題があります。セキュリティに関連する必要があります。
現在のJava VM 1.6.0_12のように動作します。
リモートでデバッグしたい他のJavaプロセスと同じです:VM(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345
)そして、指定されたポートに接続します。 Java webstart 6.0では、これは以前のバージョンでは環境変数JAVAWS_VM_ARGSを介して-Jオプションで実行できます。詳細を参照してください here 。
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(Java 8u20 +およびJava 7u70 +)の新しいバージョンについては、-Xrunjdwpなどのパラメーターを直接渡すことも、JAVAWS_VM_ARGSを使用することもできません。メッセージRejecting attempt to specify insecure property: -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
はコンソール出力に現れ始めました。
私のために働いた唯一の解決策は、これらの引数をJava_TOOL_OPTIONSシステム変数に渡すことでした。
-Jオプションを使用してjavaws実行可能ファイルにデバッグパラメーターを提供することもできます。
例:
javaws.exe -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 http://server:port/descriptor.jnlp
次のことを行う必要があります。
デバッグ用パラメータを有効にするJava(オプションですが、tls/sslハンドシェイクのclose_notifyまたはhandshake_failureの問題)&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 Control Panel> Java> View(これはこの特定の場合は必須ではありません))のJVMに対して、ブラウザからJNLPファイルを起動します:
ログとトレースは、これらの場所を貼り付けた Java Deployment Home のlog
ディレクトリにあります。
a。 Windows XP:%HOME%\Application Data\Sun\Java\Deployment
b。 Windows 7/Vista:%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:
Java 8およびWindows 10の場合、コマンドプロンプト(cmd.exe)を開き、次のように入力します。
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
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、新しいアプリケーションを追加、〜/ bin/javaws-debugを選択します。 「application/x-Java-jnlp-fileのアプリケーションの選択」ダイアログからsh。
ブラウザが設定されると、Java Web Startアプリケーションはラッパーの使用を開始します。これにより、デバッガーがポート8989で接続できるようになります。
デバッグログを印刷してみましたか?それはとにかく持っておくと便利なものであり、この場合に役立つかもしれません。
実際のデバッグが必要な場合は、例えばここ: WebStartでデバッグするにはどうすればよいですか