3

Javaアプレットをリモートデバッグしようとしていますが、-agentlib:jdwpJVM引数を機能させることができないようです。使用する特定のJREのJavaコントロールパネルで指定してみました。また、アプレットの起動に使用するJNLPファイルを使用して設定してみました。

アプレット起動用のJVMパラメータを設定する正しい方法は何ですか?特に、リモートでデバッグする場合。

4

5 に答える 5

3

同様のSOの質問を見ると、次の答えが見つかりました...

時々、セキュリティ関連のものをデバッグするために、ブラウザプラグイン環境はappletviewerとはあまりにも異なっています。ブラウザでアプレットを効果的にデバッグするためにできることは次のとおりです。

1)バイナリのデバッグ情報を取得します

JRE_HOME/libから.jarファイルをバックアップします

(ダウンロードして)JREと同じバージョンのJDKをインストールします。

.jarファイルをJDK_HOME/jre/libからJRE_HOME/libにコピーします

JDK内のファイルは、デバッグ情報(ソースコードの行番号情報、変数名など)を含めてコンパイルされており、JREファイルにはこの情報が含まれていません。

これがないと、デバッガーのコアクラスコードに意味のあるステップを踏むことができません。

2)Javaプラグインのデバッグを有効にします

Javaコントロールパネル/Java/Javaランタイム設定/表示/ユーザー/ランタイムパラメータに移動します

そして、デバッグを有効にするオプションを追加します。このようなもの:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

興味深いオプションは、ポート(ここでは2502を使用します。ほとんどすべての空きポートを使用でき、後で書き留めるだけです)とサスペンドです。アプレットの起動やクラスローディングなどをデバッグする必要がある場合は、これを「y」に設定します。 。そうすれば、アプレットページにアクセスすると、JVMがすぐに中断され、デバッガーが接続するのを待っているため、ブラウザーがフリーズしたように見えます。

3)お気に入りのIDEを使用して、Javaプラグインをリモートでデバッグします

たとえば、Eclipseでは、「実行」/「構成のデバッグ...」/「リモートJavaアプリケーション」を選択します。

「新規」ボタンをクリックします。

接続タイプが「ソケット接続」であることを確認し、ブラウザがローカルの場合はホストとしてlocalhostを選択し、前に選択したポート(例では2502)を選択します。

Javaコアクラスのソースを使用できるようにするには、[ソース]タブのJDKにsrc.zipを含める必要がある場合があります。

構成を保存し、ブラウザーがプラグインを実行したら(JVMが一時停止されているかどうかに関係なく)、リモートデバッガーを実行して、アプレットソースを含むプロジェクトを開いた状態でプラグインJVMに接続します。

于 2013-03-08T17:40:47.883 に答える
0

JAVA_TOOL_OPTIONS環境変数を使用して、デフォルトの JVM パラメータを渡すことができます。ブラウザで実行されているアプレットにパラメーターを渡します(アプレットだけではありません)。このアプローチは、Java 7u21 以降でも機能します。

于 2013-07-24T10:43:51.953 に答える
0

ブラウザ内でアプレットを実行する必要はありますか? アプレットをデバッグする通常の方法は、appletviewerを使用するためです。


According to the JPDA docs (which I'm assuming you've read, based on the things you've already tried), you should be able to specify the agent in the Java Control Panel. I've never tried this, and the doc claims that you can't interrupt the applet launch this way (just attach to a running applet), so all I can do is wish you luck.

于 2013-02-21T22:26:56.507 に答える