1

ディレクトリ構造「D:\ worksheet2 \ project \ lib」があり、すべてのファイル「AgentMain.java」(srcからコピーして、簡単にするためにここに配置)、「asm-all.3.3」があります。 jar」、「myagent.jar」。コマンドプロンプトからこのようなJavaプログラムを呼び出そうとすると

D:\workspace 2\project\lib>java -javaagent:myagent.jar -cp asm-all-3.3.jar;. AgentMain.java

スレッドメインjava.lang.NoclassDefFoundErrorAgentMain/ javaで例外が発生し、メインクラスAgentMain.javaが見つからなかったと表示されます

ここで何が問題になっていますか?

4

4 に答える 4

2

クラスの代わりにソースファイル(AgentMain.java)を実行しようとしています。AgentMainをjavacでコンパイルしたことを確認してから、.javaファイル拡張子を削除してください。

コメントからの議論に基づく更新:AgentMainクラスは、クラスをコンパイルすると「main」というパッケージで定義されるため、対応するクラスファイルは「main」というディレクトリにある必要があります。

したがって、含めたコマンドを使用して「d:\ worksheet 2 \ project \ lib」ディレクトリから実行している場合、コンパイルされたクラスはd:\ worksheet 2 \ project \ lib \ main\AgentMain.classにある必要があります。

于 2011-11-17T15:23:26.570 に答える
1

.javaファイルではなく、コンパイルされた.classファイルを参照する必要があります

于 2011-11-17T15:23:23.880 に答える
1

javaはソースファイルを解釈しません。

最初にAgentMain.javaをコンパイルする必要がありますjavac。次にAgentMain、の代わりにコマンドラインで指定する必要がありますAgentMain.java

于 2011-11-17T15:23:33.937 に答える
1

ファイルを実行することはできません。.java最初にファイルをコンパイルしてからjavac、コンパイルされたコード (.classファイル) を実行する必要があります。あなたの例では、実行する必要があります

javac -cp asm-all-3.3.jar;. AgentMain.java

その後

java -javaagent:myagent.jar -cp asm-all-3.3.jar;. AgentMain
于 2011-11-17T15:22:08.300 に答える