5

我目前正在加载Class.forName()用于加载它的 Java 类。

clazz = Class.forName("interfaces.MyClass");

但是现在我想从不同的目录加载类,我试图设置类路径

clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass");

没有成功和ClassNotFoundException. 远程课程的完整路径是:

C:/dir/distantinterfaces/DistantClass.class
4

3 回答 3

9

URLClassLoader为此使用一个。该代码可能类似于以下内容:

File f = new File("C:/dir");
URL[] cp = {f.toURI().toURL()};
URLClassLoader urlcl = new URLClassLoader(cp);
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass");
于 2013-05-02T10:11:48.287 回答
3

要么目录在类路径中,你可以使用Class.forName()(它只接受完全限定-cp的名称类,而不是命令行选项),或者它不在类路径中,然后你应该使用自定义类加载器。

您并不是在说您真正想要做什么(为什么要动态加载类),但最好的办法是将目录放在类路径中。

于 2013-05-02T10:08:08.490 回答
1

您必须创建一个知道类目录的 ClassLoader 实例。请参阅标记为 urlclassloader 的 stackoverflow 问题

于 2013-05-02T10:13:44.723 回答