2017-04-18 1 views
1

자바 리플렉션을 배우고 있습니다. 다음 코드를 사용하고 있습니다. 하지만 실행하면 오류가 발생합니다.자바 리플렉션에서 클래스를 찾을 수 없습니다.

보고되지 않은 예외 ClassNotFoundException; 잡히거나 던져진 것으로 선언 된 클래스 className = Class.forName ("First");

어쩌면 어딘가에 잘못 될 수 있습니다. 제발 도와주세요. 코드는 다음과 같습니다.

import java.lang.reflect.Method; 
public class First{ 
     public void print(){} 
     public void ready(){} 
    } 

public class test{ 
    public static void main(String args[]) 
    { 
     Class className=Class.forName("com.Test.First"); 
     Method[] methods=className.getMethods(); 
     System.out.println("First method is" + methods[0]); 
    } 
} 
+2

정확하게 말합니다. 'main' 메쏘드에'ClassNotFoundException throw '를 추가하거나,'catch' (ClassNotFoundException e)가 뒤 따르는'try' 블록에 컴파일 에러를 발생시키는 문장을 넣어야합니다. – VGR

+0

감사합니다 VGR. 알았다. – mamecu

답변

1

Class.forName이이 (비 런타임) 예외를 던졌습니다. 어떻게 든 처리해야합니다. 여기에 두 가지 방법은 당신이 어떤 횡설수설하고 컴파일러 shouldn와 com.Test.First을 대체 할 수있는, 당신이

public class test{ 
    public static void main(String args[]) throws ClassNotFoundException 
    { 
     Class className=Class.forName("com.Test.First"); 
     Method[] methods=className.getMethods(); 
     System.out.println("First method is" + methods[0]); 
    } 
} 

또는

public class test{ 
    public static void main(String args[]) 
    { 
     try { 
      Class className=Class.forName("com.Test.First"); 
      Method[] methods=className.getMethods(); 
      System.out.println("First method is" + methods[0]); 
     } 
     catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
     } 
    } 
} 
+0

감사합니다. ControlAltDel. 알았다. – mamecu

0

이 줄은 문제 Class.forName("com.Test.First")에서

Class className=Class.forName("com.Test.First"); 

하다 할 수 있습니다 당신을 위해 그것을 확인하기에 충분하지 않습니다. 컴파일러는 모든 클래스가 com.Test.First이 아니므로 ClassNotFoundException을 처리해야한다는 것을 알고 있습니다.

+0

Saideep Sambaraju 감사합니다. – mamecu

관련 문제