2010-03-24 43 views
5
package pack; 


public class sample{ 

public static void main(String input[]) 
    { 

     NumberFormat numberFormat = new DecimalFormat("#,##0.00##"); 
    System.out.println(numberFormat.format(44533125.00)); 

    } 
} 

代碼在當前目錄中工作正常..(c:/ myprogram /)。線程「main」中的異常java.lang.NoClassDefFoundError

之後,我複製sample.class文件並將其粘貼到其他目錄(d:/ myprogram)中。 我一邊跑,像

 
Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: pack/sample) 

在java中的.class文件可以在任何地方運行正確遇到錯誤?但爲什麼我不能跑?

+4

爲什麼這是一個社區維基! – medopal 2010-03-24 10:41:29

回答

18

您應該在包中包含類文件 - 因此它應該位於名爲pack的目錄中。然後在類路徑中的父目錄,你會運行

java pack.sample 

(你也應該更改類名樣品按照慣例,順便說一句 - 和運行pack.Sample。)

如果你正在構建使用javac,指定「-d」選項以將其告知基本目錄,並在必要時創建適當的包結構。例如:

javac -d classes Sample.java 

javac -d classes src/pack/Sample.java 

將(在兩種情況下)創建

classes/pack/Sample.class 

如果不使用單一然後,您可以運行

java -cp classes pack.Sample 
+0

是的,它正在工作 – Manu 2010-03-24 11:02:49

-1

java/class文件,你也可以刪除包的狀態噸。

0

IntelliJ和其他IDE可能不會重構您的運行/調試配置。您必須手動更改您的Main類名稱之前的包名稱。例如,將'sample.Main'更改爲'com.company.package.ui.Main',以便在下次嘗試運行它時正確啓動。 IDE可能已經用紅叉標記了Run/Debug按鈕,因爲它找不到主類。它還會在打開運行/調試配置時發出警告。

相關問題