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