Динамически загружать JAR, используя URLClassLoader? - PullRequest
3 голосов
/ 11 января 2011

У меня есть программа, которая должна быть в состоянии динамически загружать JAR-файлы во время выполнения - после осмотра я считаю, что это использует URLClassLoader, но я не уверен, как заставить это работать JAR "openup.jar" находится в том же каталоге, что и программа.

В идеале Я бы хотел загрузить этот JAR-файл без указания каждого отдельного класса внутри него.

1 Ответ

1 голос
/ 11 января 2011

Что я успешно использовал:

@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");
    }
}

Практически идентичное решение действительно представлено в Как динамически загружать Jars во время выполнения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...