#java #classloader
#java #classloader
Вопрос:
У меня есть система плагинов в моем Java-приложении. Возможно ли загружать классы JAR / Java «на лету» в ваше приложение, или я должен включить эти классы JAR / Java в свое приложение?
Моя идея состояла в том, чтобы загрузить плагин в приложение, а затем вызвать метод интерфейса этого класса, без необходимости перезапуска Java-приложения. Возможно ли это или вообще разумно?
Ответ №1:
Я бы рекомендовал использовать OSGi для динамической загрузки / выгрузки плагинов. Он обрабатывает все процессы загрузки классов. Если вы не можете использовать OSGi, вам придется использовать собственные загрузчики классов и настроить их в соответствии с расположением ваших загружаемых файлов jar.
Ответ №2:
Вы можете, используя свой собственный ClassLoader, который находит файл JAR и возвращает байты класса в JVM. Взгляните на это руководство от sun: http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/help.html
Ответ №3:
Я бы также рекомендовал OSGi, но для более простой системы на основе плагинов ознакомьтесь с java plugin framework. Он направлен на упрощение систем на основе плагинов и может быть найден по адресу http://jpf.sourceforge.net /.
Как упоминал @Liv, что-то вроде URLClassLoader можно использовать для простых разовых загрузок, но это быстрое решение, а не хорошая отправная точка для системы загрузки плагинов.