我似乎无法让Class.forName(String)
拒绝ClassNotFoundException
。例如,此代码是code directly from Sun's website的缩短副本会引发异常。
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);
}
}
}
制作
java.lang.ClassNotFoundException:A
我在Windows XP SP3上使用Eclipse 1.3.2.20110218-0812。有谁知道我错过了什么?
答案 0 :(得分:12)
您必须将Test类的包名称添加到A,例如,如果Test位于“test”包中,则需要执行以下操作:
Class cls = Class.forName("test.A");
答案 1 :(得分:1)
您的代码段对我来说很好。
以下是ideone.com上的演示:http://ideone.com/IBjKl
请注意,您需要为类加载器提供类的完全限定名称才能找到它。即,如果A
实际上在某个包中,则需要forName("your.package.A")
才能使其正常工作。
(请注意,导入是不必要的。)
答案 2 :(得分:1)
Class.forName
函数需要完全指定的类路径。因此,即使您已从ArrayList
导入java.util
,也应使用:
Class myClass = Class.forName("java.util.ArrayList");
这是你的问题。
答案 3 :(得分:0)
为此,您需要在类路径中使用名为“A”的类