0

我尝试在一个简单的程序中动态加载类,有趣的是,当我尝试动态加载具有简单名称的类时,它会因 classnotfoundexception 而失败。仅当类位于默认包以外的包下时才会发生这种情况。

但是当我指定完整路径名时,动态加载成功。正在加载的类与 Main 类在同一个包中。

文件 Main.java:

public class Main {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {                  
        System.out.println(Class.forName("m"));
    }
}

class m extends Main{
}
4

2 回答 2

3

不,Class.forName 总是需要包限定的类名。从参数文档

className- 所需类的完全限定名称。

调用代码的包无关紧要。

于 2013-03-11T20:45:12.937 回答
0

您必须在此处为该类输入完全限定的类名

System.out.println(Class.forName("com.sample.M"));

假设

com.sample 是你的类包名。

于 2013-03-11T20:48:57.307 回答