HelloWorld程序上的NoClassDefFoundError

时间:2012-05-22 09:52:57

标签: eclipse java noclassdeffounderror

我查看了其他NoClassDefFoundError问题,但找不到适合我的解决方案。我使用Eclipse IDE编写程序,当我右键单击时,它运行正常 - >在Eclipse中作为Java应用程序运行,但尝试通过命令行运行它会遇到上述错误。我使用的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)

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

从我从命令行开始的经验来看,我编译了我的java程序:

javac MyClass.java

然后尝试运行它解析compilen class param with extention:

java MaClass.class

然后我得到了这个例外。当我只是在没有扩展的情况下解析文件名时,它可以工作:

java MyClass

答案 2 :(得分:0)

也许你在类路径中缺少一些依赖项?

我的意思是你的HelloWorld类可能依赖于应该包含在类路径中的其他jar。 Eclipse会为您完成,但使用命令行您必须提供适当的类路径。

答案 3 :(得分:0)

您输入包“tools”并创建一个javac(这是正确的),但是您尝试从该包文件夹中启动该类(出了什么问题)。

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

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

<强>更新 看一下类路径定义:Wikipedia

答案 4 :(得分:0)

我认为完整的命令总能帮助解决问题:

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