0

我搜索了一些主题,但找不到答案。我需要的只是为默认的 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);

有人可以帮助我实现这一目标吗?谢谢。

4

1 回答 1

1

为什么不创建一个新方法来从特定路径加载类?不要忘记在 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;
        }
    }
}
于 2013-07-20T07:02:58.493 回答