我搜索了一些主题,但找不到答案。 我需要的只是为默认的ClassLoader设置一个额外的路径。
现在我有这样的课程:
public class Loader extends ClassLoader {
public void setPath(String s) {
File file = new File(s);
try {
URL classUrl = file.toURI().toURL();
URL[] urls = new URL[]{classUrl};
ClassLoader ucl = new URLClassLoader(urls);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
我需要让方法setPath以这样的方式工作:
Loader load = new Loader();
load.setPath(directoryName);
Class clazz = (ClassLoader) load.loadClass(className);
有人可以帮助我实现这个目标吗?感谢。
答案 0 :(得分:0)
为什么不创建一个新方法来从特定路径加载类?不要忘记在URL类加载器上设置父类,否则它将无法从JDK加载依赖类。
public class Loader {
public Object loadClass(String path, String classname) {
File file = new File(path);
try {
URL classUrl = file.toURI().toURL();
URL[] urls = new URL[]{classUrl};
ClassLoader ucl = new URLClassLoader(urls, getClass().getClassLoader());
return ucl.loadClass(classname);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}