Class.forName()和ClassNotFoundException

Sir*_*ncy 2 java exception classloader

说我有以下两个类:

public class MyClass {
    public String getDescription() {
        return "MyClass";
    }
}
Run Code Online (Sandbox Code Playgroud)

public class MyClassLoader {
    public static void main (String[] argv) throws ClassNotFoundException {
        Class.forName("MyClass");
        System.out.println("MyClass class was successfully loaded");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这两个类都在默认包中,它运行正常,类加载,世界是美丽的.(如果我要删除课程MyClass,我会ClassNotFoundException按预期得到一个.

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

package myClassTestPackage;
Run Code Online (Sandbox Code Playgroud)

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

导致此问题的原因是什么?如何解决?这是我能够重现我在一个更大的程序中遇到的错误的最简单方法.

gui*_*ido 6

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

Parameters:
    className - the fully qualified name of the desired class.
Run Code Online (Sandbox Code Playgroud)

所以:

Class.forName("myClassTestPackage.MyClass");
Run Code Online (Sandbox Code Playgroud)