我试图学习从Windows命令行运行java应用程序,我找不出一个问题。NoClassDeffFoundError当从不同的目录运行java.exe比.class文件
我有一个简单的类我的桌面上:
public class Hello{
public static void main(String[] args){
System.out.println("1, two, three");
}
}
如果我运行javac
和java
命令时,我在CMD一切我的桌面目录很是不错,但如果我去一个目录背(所以我不会和.java和.class文件在同一个目录中),那么我的cmd目录是C:\Users\Tomas
,我的Hello.java和Hello.class文件在C:\Users\Tomas\Desktop
。我可以运行命令javac Desktop\Hello.java
,它可以工作,但如果我尝试执行java Desktop\Hello.java
,我会得到Exception in thread "main" java.lang.NoClassDefFoundError: Desktop\Hello (wrong name: Hello)
。
我知道NoClassDefFoundError在编译时有类可用时抛出,但ClassLoader在运行时无法找到它(找到关于它的好文章here)。 我认为这个问题有什么做的CLASSPATH变量,因此我将它设置为:
"C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop"
(我包括“C:\用户\托马斯\桌面”只是尝试一切) ,我试图运行使用-classpath和-cp选项的“java”命令:
java -classpath "C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop" Desktop\Hello
而且我不断收到相同的异常。 如果有人能解释我的错误以及为什么会发生这种情况,那么我会很棒,甚至可以指出一些方向,我可以在哪里阅读更多关于此的信息。
谢谢。
当你导出它时,你是否使它成为可运行的jar? – KeirDavis
我只是写了记事本,并尝试从命令提示符运行它 – Tomas
托马斯,尝试并获得一个IDE。 Eclipse.org有一些。他们帮助完成Jars和编码语法的工作=)希望能够帮助:) – KeirDavis