我似乎不能让Class.forName(String)
不扔ClassNotFoundException
。例如,这段代码是直接从Sun的网站上摘取的代码的简短副本,它会抛出异常。
import java.lang.reflect.*;
class A {}
public class Test {
public static void main(String args[])
{
try {
Class cls = Class.forName("A");
}
catch (Throwable e) {
System.err.println(e);
}
}
}
生产
. lang。ClassNotFoundException:
我在Windows XP SP3上使用Eclipse 1.3.2.20110218-0812。有人知道我错过了什么吗?
您必须在Test类的包名前面加上A,作为一个例子,如果Test在" Test "包中,您需要以下内容:
Class cls = Class.forName("test.A");
您的代码片段对我来说很好。
下面是ideone.com的演示:http://ideone.com/IBjKl
注意,您需要提供类的完全限定名,以便类装入器找到它。例如,如果A
实际上在某个包中,则需要执行forName("your.package.A")
以使其工作。
(注意导入是不必要的)
Class.forName
函数需要完全指定的类路径。所以即使你已经从java.util
导入了ArrayList
,你也应该使用:
Class myClass = Class.forName("java.util.ArrayList");
要做到这一点,你需要在你的类路径