2013-07-23 109 views
0

我试图学习从Windows命令行运行java应用程序,我找不出一个问题。NoClassDeffFoundError当从不同的目录运行java.exe比.class文件

我有一个简单的类我的桌面上:

public class Hello{ 
    public static void main(String[] args){ 
     System.out.println("1, two, three"); 
    } 
} 

如果我运行javacjava命令时,我在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 

而且我不断收到相同的异常。 如果有人能解释我的错误以及为什么会发生这种情况,那么我会很棒,甚至可以指出一些方向,我可以在哪里阅读更多关于此的信息。

谢谢。

+0

当你导出它时,你是否使它成为可运行的jar? – KeirDavis

+0

我只是写了记事本,并尝试从命令提示符运行它 – Tomas

+0

托马斯,尝试并获得一个IDE。 Eclipse.org有一些。他们帮助完成Jars和编码语法的工作=)希望能够帮助:) – KeirDavis

回答

1

package Desktop; 

public class Hello{ 
    public static void main(String[] args){ 
     System.out.println("1, two, three"); 
    } 
} 

编译(这里Desktop指非标准windows目录)

javac Desktop\Hello.java 

执行(这里Desktop意味着packageDesktop/Hello完全类名)

java Desktop/Hello 
+0

如果你是一个来自'Desktop'的目录,那么当你运行java execute命令时,'Hello.class'文件将不在类路径中。还是会呢? –

+0

对不起,但我仍然收到相同的异常 – Tomas

+0

@Tomas答案编辑。应该使用反斜杠 – Ilya

0
java -classpath 'C:\Users\Tomas\Desktop\Hello.class' 

应该运行它。

0

尝试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”您好

我只从您的班级名称中删除桌面。

+0

同样的例外 – Tomas

相关问题