50

Eclipse を使用してリモート Java VM をデバッグする方法は知っていますが、Java Web Start プログラムを使用してそれを行うにはどうすればよいでしょうか。Java Web Start でのみ発生する問題があります。セキュリティ関連である必要があります。

1.6.0_12 のような現在の Java VM で動作するソリューションが必要です。

4

9 に答える 9

25

リモートでデバッグする他の Java プロセスとまったく同じです。VM ( -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345 ) にいくつかの引数を設定してから、指定されたポートに接続する必要があります。Java webstart 6.0 では、これは -J オプションで実行できます。以前のバージョンでは、環境変数 JAVAWS_VM_ARGS を介して実行できます。詳細はこちらをご覧ください。

于 2009-03-26T15:06:17.127 に答える
23

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
于 2009-03-26T15:15:48.650 に答える
4

次のことを行う必要があります。

  1. [Java コントロール パネル] > [詳細設定] で Java ログとトレースを有効にします。 Java コントロール パネル: ログとトレース

  2. 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 コントロール パネル: jvm 引数

  3. ログとトレースは、次の場所を貼り付けた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:
于 2017-08-07T17:13:11.910 に答える
2

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 で接続できるようになります。

于 2013-06-14T16:49:50.763 に答える
1

デバッグログを印刷しようとしましたか? いずれにせよ、これは便利な機能であり、この場合に役立つ可能性があります。

実際のデバッグが必要な場合は、たとえばここを参照してください: How can I debug under WebStart?

于 2009-03-26T15:12:36.333 に答える