2

爲什麼java會拋出一個NoClassDefFoundError?爲什麼Java中的兩個嵌套類會導致異常?

類NestedClassTest裏面有兩個嵌套類X和Y.

run: 
XXX 
Exception in thread "main" java.lang.NoClassDefFoundError: 
    Nestedclasstest/NestedClassTest$Y 
    ... 
Caused by: java.lang.ClassNotFoundException: 
    nestedclasstest.NestedClassTest$Y 
    ... 
+2

原樣是你的程序的作品。所以這是一個問題,你如何開始它,或者你已經破壞了以前編譯的某個地方的類文件? – ARRG

回答

1

你的代碼沒問題。

看你的錯誤,你可能會具有不正確的軟件包的煩惱..

Exception in thread "main" java.lang.NoClassDefFoundError: 
Nestedclasstest/NestedClassTest$Y 
... 
Caused by: java.lang.ClassNotFoundException: 
nestedclasstest.NestedClassTest$Y 

nestedclasstest VS Nestedclasstest。這裏請參考reference

只是重新編譯並再次運行,應該工作。

+0

謝謝,就是這樣。 – Helmut

-2

您需要:

當調用NestedClassTest的構造函數,實例化X和Y,試圖實例Y.

public class NestedClassTest { 

    private X x = null; 
    private Y y = null; 

    public NestedClassTest() 
    { 
     x = new X(); 
     System.out.println(x.x); 
     y = new Y(); 
     System.out.println(y.y); 
    } 

    private class X 
    { 
     public String x = "XXX"; 
    } 

    private class Y 
    { 
     public String y = "YYY"; 
    } 

    public static void main(String[] args) { 
     NestedClassTest t = new NestedClassTest(); 

    } 
} 

這是輸出的一部分,當java的拋出異常在類路徑中包含NestedClassTest$Y類。

2

沒有什麼錯,如果你使用eclipse,做一個Project,Clean並再試一次,因爲構建路徑需要更新。

+0

追蹤這個答案:如果您使用Netbeans,「clean and build」是您需要的選項。 – ryvantage

0

您發佈的代碼本身沒有錯誤。你在別處遇到困難,需要彙編或調用。

相關問題