我的档案目录:
project/src/m2mcom/entities/AutomatedTelnetClient.java
/web/Simple.java
/org/apache/commons/net/telnet/TelnetClient.java
Simple.java的源代码:
package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import java.util.*;
import java.io.*;
public class Simple {
public static void main(String [] args) {
try {
AutomatedTelnetClient telnet = new AutomatedTelnetClient();
String answer = telnet.request();
System.out.println(answer);
} catch (Exception e) {
System.err.println("Error");
}
}
}
当我执行Simple.class时,没有任何编译错误,我收到此错误消息:
C:\Users\Victor\Desktop\project2\src\m2mcom\web>java Simple
Exception in thread "main" java.lang.NoClassDefFoundError: Simple (wrong name: m
2mcom/web/Simple)
有谁知道如何解决这个问题?
答案 0 :(得分:36)
您正在错误的文件夹中执行命令,并使用错误的类名。运行Java类时,需要使用完全限定名称(FQN)。当然,你必须在正确的目录中。在您的示例中,您的类的FQN是m2mcom.web.Simple(包 m2mcom.web
和简单名称Simple
的组合)。
就推断出正确的目录而言,您的类存储在分层文件夹结构中,该结构基本上从C:\Users\Victor\Desktop\project2\src
开始。
因此,要从C:\Users\Victor\Desktop\project2\src
正确执行您的程序,请执行;
java m2mcom.web.Simple
答案 1 :(得分:5)
package m2mcom.web;
删除上面的行并重新编译它。 当您在netbeans中运行代码时,它包含在m2mcom.web包中。这不在您的类文件中。
答案 2 :(得分:0)
因此,当您执行java命令时,您必须位于包名称正上方的目录中,该命令应该是packagename.classname,而不是.class后缀。