“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:名称错误

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:名称错误,java,noclassdeffounderror,Java,Noclassdeffounderror,我的文件目录: 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; imp

我的文件目录:

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)

有人知道如何解决这个问题吗

您在错误的文件夹中使用错误的类名执行命令。运行Java类时,需要使用完全限定名(FQN)。当然,你必须在正确的目录中。在您的示例中,类的FQN是m2mcom.web.Simple(包名称
简单的组合)

就推导正确的目录而言,您的类存储在分层文件夹结构中,基本上从
C:\Users\Victor\Desktop\project2\src
开始

因此,要正确执行您的程序,请从
C:\Users\Victor\Desktop\project2\src
执行

java m2mcom.web.Simple
删除上面的行并重新编译。
当您在netbeans中运行代码时,它将包含在m2mcom.web包中。该包不在您的类文件中。

因此,当您执行java命令时,必须位于包名正上方的目录中,该命令的格式应为packagename.classname,不带.class后缀

看看这个链接,你就会明白为什么会出现这个错误,以及将来如何避免它。当运行Java类时,你需要使用完全限定的名称,而且你也在错误的文件夹中运行程序。非常感谢你给出了这个清晰的答案,Perception!
package m2mcom.web;