【发布时间】:2014-05-15 13:10:33
【问题描述】:
我正在尝试这个反射示例代码:
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);
}
}
显示的错误如下:
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
如何,我解决了代码中的上述错误。 我也给了 Foo.Test 但它根本不起作用。
请帮我解决这个问题。 谢谢你
【问题讨论】:
-
你要加载的
Test类放在哪个包里? -
如果在编译和运行时类路径中都有可用的类,则可以使用类文字“clazz = Test.class”,因为它的编译时间检查(编译器会告诉你是否它找不到类)。如果类并不总是在类路径上,或者在编译时不知道(例如 JDBC 驱动程序),classForName() 是要走的路
标签: java object reflection classnotfoundexception dynamicobject