线程“main”中的exceptionjava.lang.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; 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( m2mcom.web简单名称Simple )。

推导出正确的目录,您的类存储在分层文件夹结构中,该结构基本上以C:\Users\Victor\Desktop\project2\src

所以要正确执行你的程序,从C:\Users\Victor\Desktop\project2\src ,do;

 java m2mcom.web.Simple 
 package m2mcom.web; 

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

因此,当您执行java命令时,您必须位于包名称正上方的目录中,该命令应该是packagename.classnameforms,而不是.class后缀。