为什么Java使用NoClassDefFoundError?

NestedClassTest类在内部具有两个嵌套类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
    ...

最佳答案

您的代码很好。

查看您的错误,您可能会遇到软件包错误的问题。

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


nestedclasstest与Nestedclasstest。在这里参考reference

只需重新编译并再次运行,就可以正常工作。

10-08 15:39