2

Java が NoClassDefFoundError をスローするのはなぜですか?

クラス NestedClassTest には、内部に 2 つのネストされたクラス X と Y があります。

X と Y をインスタンス化する NestedClassTest のコンストラクターを呼び出すと、Java は 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();

    }  
}

これは出力の一部です:

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

4 に答える 4

2

ビルドパスを更新する必要があるため、Eclipseを使用している場合は、プロジェクトを実行し、クリーンアップしてから再試行してください。

于 2013-08-02T12:12:30.940 に答える
0

あなたが投稿したコード自体は間違っていません。あなたの問題は、コンパイルまたは呼び出しで、別の場所にあります。

于 2013-08-02T12:20:36.797 に答える
-2

NestedClassTest$Yクラスをクラスパスに含める必要があります。

于 2013-08-02T12:10:35.450 に答える