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

코드는 문제가 없습니다.

당신이 당신의 오류에서 수도 찾고은 Nestedclasstest 대 nestedclasstest

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

.. 잘못된 패키지와 문제를 낳게 될. 여기를 참조하십시오 reference

다시 컴파일하고 다시 실행하면 작동합니다.

+0

고마워요. – Helmut

-2

: X와 Y의 인스턴스를 NestedClassTest의 생성자를 호출 할 때 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(); 

    } 
} 

이 출력의 일부를 인스턴스화 할 때

는 자바에서 예외가 발생합니다 클래스 경로에 NestedClassTest$Y 클래스를 포함합니다.

2

이클립스를 사용하는 경우 프로젝트 경로를 정리하고 다시 빌드 경로를 업데이트해야하므로 아무 문제가 없습니다.

+0

다음 답변을 따르십시오. Netbeans을 사용하는 경우 찾고자하는 "정리 및 빌드"옵션이 있습니다. – ryvantage

0

게시 한 코드 자체가 정확하지 않습니다. 어려움은 컴파일이나 호출과 함께 다른 곳에 있습니다.