web-dev-qa-db-ja.com

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

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

現在のJava VM 1.6.0_12のように動作します。

48
Horcrux7

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

25
Kai Huppmann

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
23
mkoeller

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システム変数に渡すことでした。

15
Vojtěch Tůma

-Jオプションを使用してjavaws実行可能ファイルにデバッグパラメーターを提供することもできます。

例:

javaws.exe -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 http://server:port/descriptor.jnlp
9
Marco Montel

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

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

  2. デバッグ用パラメータを有効にする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 Control Panel: jvm arguments

  3. ログとトレースは、これらの場所を貼り付けた Java Deployment Homelogディレクトリにあります。

    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:
4
lmiguelmh

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
2
qwertzguy

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

2

デバッグログを印刷してみましたか?それはとにかく持っておくと便利なものであり、この場合に役立つかもしれません。

実際のデバッグが必要な場合は、例えばここ: WebStartでデバッグするにはどうすればよいですか

1
sleske