2

为什么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
    ...
4

4 回答 4

2

这没有什么问题,如果您使用的是 eclipse,请做一个项目,清理并重试,因为需要更新构建路径。

于 2013-08-02T12:12:30.940 回答
1

你的代码很好。

查看您的错误,您可能在使用不正确的软件包时遇到了麻烦。

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

嵌套类测试与嵌套类测试。请参阅此处以供参考

只需重新编译并再次运行,应该可以工作。

于 2013-08-02T12:12:44.277 回答
0

您发布的代码本身并没有错误。您的困难在于编译或调用。

于 2013-08-02T12:20:36.797 回答
-2

您需要在NestedClassTest$Y类路径中包含该类。

于 2013-08-02T12:10:35.450 回答