Можно ли загрузить JAR в запущенное Java-приложение на лету? - PullRequest
3 голосов
/ 28 апреля 2011

В моем приложении Java есть система плагинов.Можно ли загружать JAR / Java-классы на лету в ваше приложение или мне нужно включить эти JAR / Java-классы в мое приложение?

Моя идея состояла в том, чтобы загрузить плагин в приложение и затем вызвать метод интерфейсаэтого класса, без необходимости перезапускать приложение Java.Это возможно или даже вообще разумно?

Ответы [ 3 ]

10 голосов
/ 28 апреля 2011

Я бы рекомендовал использовать OSGi для динамической загрузки / выгрузки плагинов.Он обрабатывает все вещи загрузки классов.Если вы не можете использовать OSGi, вам придется использовать собственные загрузчики классов и настроить их в соответствии с расположением загружаемых вами jar-файлов.

4 голосов
/ 28 апреля 2011

Я бы также порекомендовал OSGi, но для более простой системы на основе плагинов ознакомьтесь с фреймворком плагинов Java.Он призван упростить системы на основе плагинов и может быть найден в http://jpf.sourceforge.net/.

Как упоминалось @Liv, что-то вроде URLClassLoader может использоваться для простых одноразовых загрузок, но это быстрое решение, а нехорошая отправная точка для системы загрузки плагинов.

4 голосов
/ 28 апреля 2011

Вы можете, используя свой собственный ClassLoader, который находит файл JAR и возвращает байты класса в JVM. Взгляните на этот урок от солнца: http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/help.html

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