2

假设我有以下两个课程:

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");
    }
}

如果这两个类都在默认包中,它运行良好,类加载,世界是美丽的。(如果我要删除 class MyClass,我会得到一个ClassNotFoundException,正如预期的那样。

但是,如果它们都在一个包中(假设它是 Eclipse 中的一个包),并且

package myClassTestPackage;

在两者中声明,ClassNotFoundException当我尝试运行它时我得到一个。

是什么导致了这个问题,我该如何解决?这是我能够重现我在更大程序中遇到的错误的最简单方法。

4

1 回答 1

6

这是因为Class.forName() 方法将完全限定的类名作为参数。

Parameters:
    className - the fully qualified name of the desired class.

所以:

Class.forName("myClassTestPackage.MyClass");
于 2012-11-10T23:02:53.627 回答