2011-03-28 29 views
0

好的,我在根文件夾下有一個名爲'Sandwich.java'的文件,在[root]/MyFrstPkg文件夾內有一個名爲'SandwichType.java'的文件。無論出於何種原因,它都不會聲稱Sandwich.java無法找到。下面是目錄結構:ClassNotFoundException Sandwich.Java ...它在哪裏?

root -- 
     | 
     |- Sandwich.java 
     | 
     |-MyFirstPkg 
       | 
       |-SandwichType.java 

這裏是Sandwich.java:

//note I also tried adding package MyFrstPkg; in this file as well and removing the leading MyFrstPkg. from the import statement below, still no luck. 

import MyFrstPkg.SandwichType; //the text 'MyFrstPkg' part is underlined as an error 

class Sandwich{ 

    SandwichType type; //the text 'SandwichType' is underlined as an error 

    public static void main(String[] args){ 

     Sandwich sndwch1 = new Sandwich(); 

     sndwch1.type = SandwichType.HAM; //the text 'SandwichType' is underlined as an error 

     System.out.println("A HAM costs $"+sndwch1.type.getCost()); 
     System.out.println("and has "+ sndwch1.type.getSlices()+" slices."); 
    } 

} 

這裏是SandwichType.java:

package MyFrstPkg; 

enum SandwichType{ 

    HAM(0,0f); 

    SandwichType(int numSlices, float cost){ // constructor - Ryan changed 'numslices' to 'numSlices' 
     this.numSlices = numSlices; 
     this.cost  = cost; 
    } //end constructor 

    private int numSlices; //These are specific to this 
    private float cost; // enum class... 

    public int getSlices(){ 
     return numSlices; 
    } 

    public float getCost(){ 
     return cost; 
    } 

}//end of SandwichType enum 

我在CMD瀏覽到根的位置和運行'java sandwich.java',我得到的只是一個ClassNotFoundExeption Sandwich.Java,爲什麼沒有找到?這是它自己D:

回答

0

Netbeans是基於項目的,所以我會嘗試創建一個基本的Java Application項目,並把它們放在那裏。

+0

好的我已經把NetBeans全部放在一起,現在我只是使用Notepad ++並嘗試在CMD中使用java編譯,我一直在類未找到錯誤三明治.Java現在,我很困惑。 – BigOmega 2011-03-28 00:30:57

0

如果您選擇「新項目」,然後選擇「java應用程序」,那麼項目的名稱將成爲基本包名稱。如果你已經設置了包/目錄結構,你會想選擇「帶有現有源的java項目」。

如果您選擇「java應用程序」,您可以刪除默認的軟件包名稱,然後右鍵單擊項目名稱,選擇「新建」,然後從列表中選擇「Java Package ...」。

編輯: - 對不起......沒有注意到。你的課程不公開。這是你真正的問題。

public class Sandwich { ... 
public enum SandwichType { ... 

至於試圖運行java Sandwich.java ...呃,你不能。這是源代碼。它必須先編譯成一個類。

+0

我已經從方程中完全取出了NetBeans,現在我只是在嘗試在命令行上編譯時發現類未找到錯誤,請參閱上面的更新。 – BigOmega 2011-03-28 00:39:15

+0

對不起,沒有真正看你的代碼。嘗試讓你的課程「公共」......否則不能通過包來訪問它們。 – 2011-03-28 00:43:28

+0

使這個類和enum都是公共的,編譯似乎沒有返回錯誤,實際上它什麼都不返回,但是Sandwich.class文件現在確實存在。當我用'java'運行它時,會拋出上面列出的同樣的錯誤,但沒有發現三明治的異常。 – BigOmega 2011-03-28 00:52:09

1

要編譯類,使用

javac Sandwich.java 

如果沒有給出錯誤信息,你應該能夠調用

java Sandwich 

開始你的計劃。


如果第一個工作沒有錯誤,我們是更進一步。如果第二個不行,試試這個來代替:

java -cp . Sandwich 

如果是這樣工作的,你已經設置了一些錯誤的類路徑。輸入echo %CLASSPATH%併發布結果。 (通常你根本不需要CLASSPATH變量來完成簡單的項目)

+0

嘆氣,即使我剛剛映射系統變量:(...確定我有錯誤的PATH集,它現在正在工作,但是當我嘗試運行該類時,現在它正在編譯... – BigOmega 2011-03-28 00:48:48

+0

請清楚地說出你有哪個錯誤,並且你如何運行這個類? – 2011-03-28 01:04:55