2016-08-23 2 views
-3

У меня есть цель написать пользовательский загрузчик классов, который необходим для загрузки классов из некоторых пользовательских репозиториев, для реализации функций быстрого развертывания и для разгрузки классов. Если у вас есть опыт работы с подобной задачей, поделитесь своими знаниями.Как написать пользовательский загрузчик классов для загрузки классов из банки?

ответ

1

Нет необходимости писать пользовательские ClassLoader в вашем случае, URLClassLoader должно быть достаточно, вы просто предоставить массив URL в качестве параметра (соответствующее папкам классов или файлов фляги, чтобы включить) в конструктор и в конечном счете, родительский класс погрузчик (Thread.currentThread().getContextClassLoader() может быть хорошим кандидатом).

NB: Как вы намерены сделать горячее развертывание, убедитесь, что вы называете close() на вашем URLClassLoader, например, чтобы правильно освободить ресурсы.

Вот как вы затем создать динамически экземпляр Class с помощью отражения:

Class<?> myClass = Class.forName(myClassName, true, myClassLoader); 
Object myObject = myClass.newInstance(); 
+0

мне нужно для гибкого управления в рамках процесса загрузки класса, где я могу контролировать этот процесс, URLClassLoader не подходит для этого цель. Ссылки в моем ответе решают мои проблемы. – pacman

+0

Я уже создал проект на основе URLCL с очень схожими потребностями, и достаточно https://github.com/essobedo/application-manager. В вашем комментарии/вопросе неясно, что в ваших требованиях указано, что мешает вам использовать его –

Смежные вопросы