我查看了其他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)
答案 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