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

您发布的代码本身没有错误。你在别处遇到困难,需要汇编或调用。

相关问题