我有一个目录结构“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
这里有什么问题?
答案 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
。