Java Web Start (JNLP) でアプリケーションをデバッグするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/686061

質問

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で、これは環境変数JAVAWS_VM_ARGSを経由して、以前のバージョンでは、-Jオプションで行うことができます。ここの詳細を参照してください。

他のヒント

手動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

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

  1. 「Java コントロール パネル」 > 「詳細」で Java ログとトレースを有効にします。Java Control Panel: logs and tracing

  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 Control Panel: jvm arguments

  3. ログとトレースは次の場所にあります。 log ディレクトリから Java 展開ホーム これらの場所を貼り付ける場所から:

    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

あなたは、デバッグログを印刷しようとしたことがありますか?これは、任意の割合であると便利なものであり、この場合には役立つかもしれません。

あなたは本当のデバッグをしたい場合は、

、例えば参照ここに: どのように私はWebStartのですか

の下でデバッグすることができます

、Linux上でアプリケーションを起動し、Webをデバッグするには上記のようにデバッグモードでの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システムの設定を変更する必要があります。 、新しいアプリケーションを追加し、X-javaの-JNLPファイルアプリケーション/ X-javaのための」選択したアプリケーションから〜/ binに/ javaws-debug.shを選ぶ:アプリケーション:KDEでは、[システム設定]→[ファイルの関連付け、既知の型に行きます-jnlpファイル」ダイアログます。

ブラウザを設定すると、Java Web Startのアプリケーションがポート8989に接続するためのデバッガを有効になる、あなたのラッパーを使用して開始します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top