3

次のシナリオでこのメッセージが表示されます。

java.lang.ClassNotFoundException:agents.MemoryAgent

このリンクをたどって、Javaエージェントクラスをjarに手動でバンドルしました。実行/デバッグ構成については、作業エントリをコピーし、VM 引数を追加しました。

これらの両方を試しました(定数引数はコピーされた構成から引き継がれます)

-javaagent:agent.jar -Xms256m -Xmx1024m -Djava.net.preferIPv4Stack=true

-javaagent:agent.jar -cp . -Xms256m -Xmx1024m -Djava.net.preferIPv4Stack=true

注: ここでは仮名クラスが使用されていますが、実際のクラスは存在します ここに画像の説明を入力

上記で指定した「作業ディレクトリ」と、プロジェクト構造/設定ダイアログで指定した「プロジェクトコンパイラ出力」ディレクトリにagent.jarファイルを入れてみました。

私のmanifest.txtファイルの内容全体:

Premain-Class: エージェント.MemoryAgent

抽出すると、 META-INF\MANIFEST.MF ファイルに次のように生成されます。

マニフェスト バージョン: 1.0 作成者: 1.6.0 (Sun Microsystems Inc.) Premain-Class: agents.MemoryAgent

クラスのパスが、jar ファイルとクラス ファイルで使用されているものと一致することを確認しました。


私は使用しています:

  • Java バージョン「1.7.0_25」
  • Intellij12.1

クラスが見つからないのはなぜですか?

スクリーンショットでは、「モジュールのクラスパスを使用する」というタイトルのフィールドがありますが、これが定義されている場所を見つけることができませんでした。それは関係ありますか?

4

1 に答える 1

1

IDEA は、-javaagent で指定した jar (この場合は agent.jar) を作業ディレクトリ (上の画面に表示) で見つけようとします。上記の UI に示されているように、jar を「作業ディレクトリ」にコピーすると、問題が修正されます。したがって、あなたの場合、agent.jar を「E:\Autre\Projects\JetBrains」にコピーします。

于 2016-02-02T11:01:57.680 に答える