说我有以下两个类:
public class MyClass {
public String getDescription() {
return "MyClass";
}
}
和
public class MyClassLoader {
public static void main (String[] argv) throws ClassNotFoundException {
Class.forName("MyClass");
System.out.println("MyClass class was successfully loaded");
}
}
如果这两个类都在默认包中,它运行正常,类加载,世界是美丽的。 (如果我要删除课程MyClass
,我会按预期获得ClassNotFoundException
。
但是,如果它们都在一个包中(假设它是Eclipse中的包),并且有
package myClassTestPackage;
在两者中声明,当我尝试运行它时,我得到ClassNotFoundException
。
导致此问题的原因是什么?如何解决?这是我能够重现我在更大的程序中遇到的错误的最简单方法。
答案 0 :(得分:6)
那是因为Class.forName() method将完全限定的类名作为参数。
Parameters:
className - the fully qualified name of the desired class.
所以:
Class.forName("myClassTestPackage.MyClass");