的Java的Class.forName()从遥远的目录的Java的Class.forName()从遥

2019-05-12 05:38发布

我目前使用加载Java类Class.forName()加载它。

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

但现在我想加载来自不同目录中的类,我试图通过设置类路径

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

由于没有成功ClassNotFoundException 。 到遥远的类的完整路径是:

C:/dir/distantinterfaces/DistantClass.class

Answer 1:

使用URLClassLoader这一点。 该代码可能是沿着线的东西:

File f = new File("C:/dir");
URL[] cp = {f.toURI().toURL()};
URLClassLoader urlcl = new URLClassLoader(cp);
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass");


Answer 2:

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

你不是说你真正想做的事(你为什么要动态地加载类),但你最好的办法是在类路径的目录。



Answer 3:

你必须创建ClassLoader的实例是知道与类目录。 见计算器问题标记的URLClassLoader 。



文章来源: Java Class.forName() from distant directory