【问题标题】:Why do two nested classes in Java lead to an exception?为什么Java中的两个嵌套类会导致异常?
【发布时间】:2013-08-03 16:51:51
【问题描述】:

为什么 java 会抛出 NoClassDefFoundError?

NestedClassTest 类内部有两个嵌套类 X 和 Y。

调用NestedClassTest的构造函数,实例化X和Y,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
    ...

【问题讨论】:

  • 按原样运行您的程序。所以这是你如何启动它的问题,或者你在以前的编译中破坏了类文件?

标签: java noclassdeffounderror classnotfoundexception nested-class


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 跟进此答案:如果您使用的是 Netbeans,“清理并构建”是您要寻找的选项。
    【解决方案3】:

    你的代码没问题。

    查看您的错误,您可能遇到了错误包的问题..

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

    嵌套类测试与嵌套类测试。参考这里reference

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

    【讨论】:

      【解决方案4】:

      您发布的代码本身并没有错误。你的困难在于其他地方,编译或调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多