:반사 - 샘플 코드 - ClassNotFoundException가 내가 반성의이 샘플 코드를하려고했던 오류
run:
Exception in thread "main" java.lang.ClassNotFoundException: Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at foo.Foo.main(Foo.java:29)
Java Result: 1
방법, 나는 위 해결할 수 :
import java.lang.reflect.Method;
class Test
{
public Test()
{ }
public void sayHello()
{
System.out.println("Hello");
}
}
public class Foo
{
public static void main (String[] args) throws Exception
{
Class<?> clazz = Class.forName("Test");
Method method = clazz.getMethod("sayHello");
Object instance = clazz.newInstance();
method.invoke(instance);
}
}
다음은 표시되어있는 오류입니다 코드에 오류가 있습니다. 나는 또한 Foo.Test를 주었지만 전혀 작동하지 않습니다.
이 문제를 해결하는 데 도움주세요. 감사합니다.
로드 할 '테스트'클래스는 어느 패키지에 있습니까? – Pshemo
컴파일 및 런타임시 클래스 경로에서 클래스를 사용할 수있는 경우 클래스 리터럴 "clazz = Test.class"를 사용할 수 있습니다. 컴파일 시간이 확인됩니다 (컴파일러는 클래스를 찾을 수없는 경우 컴파일러에서 이미 알려줍니다.). classForName()은 클래스가 클래스 경로에 항상 있지 않거나 컴파일 타임에 알려지지 않은 경우 (예 : JDBC 드라이버) – Durandal