Eclipse HelloWorld程序上的NoClassDefFoundError

Eclipse HelloWorld程序上的NoClassDefFoundError,eclipse,java,noclassdeffounderror,Eclipse,Java,Noclassdeffounderror,我查看了其他NoClassDefFoundError问题,没有找到适合我的解决方案。我正在使用EclipseIDE编写一个程序,当我在Eclipse中右键单击->RunasJava应用程序时,它运行良好,但试图通过命令行运行它会遇到上述错误。我使用的JRE是(我认为)Java60。该程序使用运行良好的javac HelloWorld.java编译,然后调用java-cp。HelloWorld抛出错误。如果您能帮助解决此问题,我们将不胜感激 代码是: package tool; public c

我查看了其他NoClassDefFoundError问题,没有找到适合我的解决方案。我正在使用EclipseIDE编写一个程序,当我在Eclipse中右键单击->RunasJava应用程序时,它运行良好,但试图通过命令行运行它会遇到上述错误。我使用的JRE是(我认为)Java60。该程序使用运行良好的javac HelloWorld.java编译,然后调用java-cp。HelloWorld抛出错误。如果您能帮助解决此问题,我们将不胜感激

代码是:

package tool;

public class HelloWorld {

public static void main(String[] args){
    System.out.println("Hello World!");
}

}
从“C:\MADtool\HostDBtoMADTool\src\tool”运行

命令行的输出为:

C:\MADtool\HostDBtoMADtool\src\tool>java -cp . HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam
e: tool/HelloWorld)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

我从comand line的旧版本Expirence编译java程序:

javac MyClass.java
然后尝试使用以下扩展名运行它:

java MaClass.class
然后我得到了这个例外。当我只解析文件名而不分析扩展名时,它可以工作:

java MyClass

可能您的类路径中缺少一些依赖项

我的意思是,您的HelloWorld类可能依赖于应该包含在类路径中的其他JAR。 Eclipse为您做了这件事,但是使用命令行您必须提供适当的类路径。

您输入包“tools”并生成一个javac(这是正确的),但是您尝试从该包文件夹中启动该类(这是错误的)

您必须首先更改到src目录,因为类路径是相对于源文件夹的。如果你使用软件包(你真正应该做的)。必须确保从正确的开始文件夹开始代码:

C:\MADtool\HostDBtoMADtool\src>java -cp . HelloWorld
更新
查看类路径定义:

执行
$java HelloWorld
将在默认包中搜索类
HelloWorld
。不存在这样的类,只有
tool.HelloWorld


此外,如果您运行
$java tool.HelloWorld
,java将尝试查找文件
tool/HelloWorld.class
,因此您需要确保您的工作目录是包含的目录,不是工具本身。

我认为当出现问题时,完整的命令总是有帮助的:

C:\MADtool\HostDBtoMADtool\src>java -cp "C:\MADtool\HostDBtoMADtool\src" tool.HelloWorld
C:\MADtool\HostDBtoMADtool\src\tool>java -cp "C:\MADtool\HostDBtoMADtool\src" tool.HelloWorld

发布确切的异常stacktrace和目录结构在此处显示HelloWorld.java文件。您可以发布代码吗?最好先排除这一点:)您是否从类所在的文件夹中运行java命令?您是否尝试过“java HelloWorld”?这帮助我让它工作起来!我切换到src目录并运行
java-cp。工具/HelloWorld
成功了!谢谢,你能告诉我为什么我所做的是错误的,这样我就可以确保我以后不会犯同样的错误了?我读了这个链接,我可以理解它,但我不知道作为一个目录级别的人如何对它进行排序。另外,由于某些原因,你的结束括号没有添加到链接的末尾。我在回答中做了一点修改。但您应该在谷歌上搜索有关创建.jar文件和构建java项目的更多信息。提示:搜索ant或maven