次のシナリオでこのメッセージが表示されます。
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
クラスが見つからないのはなぜですか?
スクリーンショットでは、「モジュールのクラスパスを使用する」というタイトルのフィールドがありますが、これが定義されている場所を見つけることができませんでした。それは関係ありますか?