设置classloader不同的目录

时间:2013-07-18 13:12:41

标签: java classloader

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

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

1 个答案:

答案 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;
        }
    }
}