2013-07-23 57 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

相關問題