3

本物を実装する前に、単純なJavaエージェントプログラムを作成しようとしています。実行できません。明らかに、ある種の構成またはクラスパスの問題があります。探したり試したりしても、問題は発生しません。

私が実行した場合:

java -cp ./demoAgent.jar -javaagent:./ demoAgent.jar com.kingtigerbooks.demoMod.Main

次のエラーが発生します。

Exception in thread "main" java.lang.ClassNotFoundException: com.kingtigerbooks.demoAgent.Agent
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:280)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
FATAL ERROR in native method: processing of -javaagent failed
Abort trap

私はこれをMacで実行しています。エージェントを含むjarファイルは現在のディレクトリにあります。jarファイルのマニフェストは次のようになります。

Manifest-Version: 1.0
Premain-class: com.kingtigerbooks.demoAgent.Agent
Can-Redefine-Classes: true

クラスパスの問題のようなにおいがするが、ご覧のとおり、クラスパスにjarを含めました。どんな助けでもいただければ幸いです。その非常に単純なプロジェクト。

4

2 に答える 2

4

問題が解決しました。悪いjarファイルがありました。エージェントjarファイルにエージェントクラスが含まれていませんでした。正しいjarファイルを作成し、jarへの完全修飾パスをjavaagentパラメーターに入れることで、すべてが機能します。

于 2012-03-27T15:13:24.433 に答える
2

エージェントを実行するとき、エージェント jar を通常のクラスパスに追加しません。

補足として、-verbose:classコマンド ラインに を追加して、クラスのロード プロセスに関する情報を取得できます。

于 2012-03-26T19:31:15.970 に答える