我目前使用加载Java类Class.forName()
加载它。
clazz = Class.forName("interfaces.MyClass");
但现在我想加载来自不同目录中的类,我试图通过设置类路径
clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass");
由于没有成功ClassNotFoundException
。 到遥远的类的完整路径是:
C:/dir/distantinterfaces/DistantClass.class
使用URLClassLoader
这一点。 该代码可能是沿着线的东西:
File f = new File("C:/dir");
URL[] cp = {f.toURI().toURL()};
URLClassLoader urlcl = new URLClassLoader(cp);
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass");
无论是目录在类路径中,你可以使用Class.forName()
只接受fuly限定名称类,而不是-cp
命令行选项),或者它不是在classpath中,然后你应该使用自定义的类装载器。
你不是说你真正想做的事(你为什么要动态地加载类),但你最好的办法是在类路径的目录。
你必须创建ClassLoader的实例是知道与类目录。 见计算器问题标记的URLClassLoader 。