使用URLClassLoader动态加载JAR?

时间:2011-01-11 11:10:03

标签: java dynamic jar

我有一个程序需要能够在运行时动态加载JAR - 在环顾四周后我相信它使用URLClassLoader,但我不知道如何让它工作。 JAR“openup.jar”与程序位于同一目录中。

理想情况我希望能够加载此JAR,而无需在其中指定每个单独的类。

1 个答案:

答案 0 :(得分:1)

我成功使用了什么:

@SuppressWarnings("unchecked")
public void addURL(URL u) throws IOException {
    URLClassLoader sysLoader = (URLClassLoader) ThisClass.class.getClassLoader();
    URL urls[] = sysLoader.getURLs();
    for (int i = 0; i < urls.length; i++) {
        if (urls[i].toString().equalsIgnoreCase(u.toString())) {
            return;
        }
    }
    Class sysclass = URLClassLoader.class;
    try {
        Method method = sysclass.getDeclaredMethod("addURL", parameters);
        method.setAccessible(true);
        method.invoke(sysLoader, new Object[] { u });
    } catch (Throwable t) {
        throw new IOException("Error, could not add URL to system classloader");
    }
}

How should I load Jars dynamically at runtime?

确实提供了几乎相同的解决方案