java代理类未找到异常

时间:2011-11-17 15:19:57

标签: java command-line jar javaagents

我有一个目录结构“D:\ workspace 2 \ 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.NoclassDefFoundError中给出了异常AgentMain / java并说无法找到主类AgentMain.java

这里有什么问题?

4 个答案:

答案 0 :(得分:1)

您无法运行.java个文件,需要先使用javac编译它们,然后运行已编译的代码(.class个文件)。在您的示例中,您必须运行

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

然后

java -javaagent:myagent.jar -cp asm-all-3.3.jar;. AgentMain

答案 1 :(得分:1)

您应该引用已编译的.class文件,而不是.java文件

答案 2 :(得分:1)

您正在尝试执行源文件(AgentMain.java)而不是类。确保已使用javac编译AgentMain,然后删除.java文件扩展名。

根据评论的讨论更新: 由于您的AgentMain类在编译类时在名为“main”的包中定义,因此其对应的类文件必须位于名为“main”的目录中。

因此,如果您使用所包含的命令从“d:\ workspace 2 \ project \ lib”目录运行,则编译的类需要位于d:\ workspace 2 \ project \ lib \ main \ AgentMain中。类

答案 3 :(得分:1)

java不解释源文件。

您必须首先使用javac编译AgentMain.java。然后,您必须在命令行而不是AgentMain指定AgentMain.java