2011-08-15 52 views
0

好的,所以我正在製作一個簡單的Java類,只需打印出「Hello!」。下面是代碼:試圖運行我的應用程序時,爲什麼會出現NoClassDefFoundError?

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

我通過在命令提示符下編譯的類,然後,當我想運行它,它給了我一個NoClassDefFoundError的暗示存在與classpath中的一個問題。這實在是愚蠢的,因爲它是一個一流的程序。我嘗試了很多事情,但似乎沒有解決問題。

我該如何解決這個問題?

+2

你執行了哪些命令來編譯和運行? – birryree

+0

@Agadoo:如果Jon的回答幫助您解決問題,請接受它(使用旁邊的複選標記按鈕)。這有助於我們知道沒有更多的事情要做。 –

回答

0

您有環境變量CLASSPATH集,但它不包含「。」。 (點)來表示當前目錄(作爲默認的那樣)運行是這樣的:

java -cp . Hello 

這是「Java領域破折號CP空間點空間你好」。

一旦你過去了「Hello,World」,你會發現設置類路徑一直是必需的 - 無論是通過手動(很少,在現實世界中)還是在啓動腳本中,構建工具或IDE。

使用CLASSPATH環境變量是Java早期的一個糟糕的做法。通常你會發現它是Apple的QuickTime安裝程序,它將其設置爲某種東西。你不應該使用或依賴這個變量。

6

您尚未顯示如何運行代碼。我的猜測是,你跑:

java Hello.class 

它試圖運行稱爲Hello.class。該類剛剛任命Hello,所以你需要:

java Hello 

如果您沒有設置CLASSPATH環境變量,這應該是罰款。否則,要麼將其設置爲路徑,包括.或指定它的命令行:

java -cp . Hello 

當然,這是假設你編譯代碼首先,使用如下命令:

javac Hello.java 
+0

謝謝你!多麼愚蠢的我大聲笑...我做了一百萬次,但由於某種原因,這次我忘了我應該省略.class – Agadoo

+0

你應該接受@Jon Skeet的回答 – Snicolas

相關問題