Я хотел бы узнать все реализации интерфейса во время выполнения в приложении Java и динамически загружать эти классы из файлов JAR, которые пользователь может добавить в папку. Это плагин, в основном.Простая инфраструктура обнаружения служб Java
Я нашел несколько решений для этого:
- Использование SPI - это не очень гибким: Я хотел бы кое-что, возможно, работает с аннотациями, или просто ищет интерфейс, который продлевается, без добавив внешние текстовые файлы.
- Использование Commons Discovery - выглядит как тупик, так как последний релиз 0,4 от спины в 2005
- Использование Java Simple Plugin Framework. 5 minutes and it works. No XML. - это выглядит очень незрелыми.
Есть ли другие широко используемые решения для этого?
Обновление: Нет необходимости в разделении кода, а OSGi кажется слишком сложным для моих простых нужд прямо сейчас. Я также добавил «Простой» к названию этого вопроса, чтобы прояснить мои намерения.
OSGi может решить такие проблемы и, кроме того, предоставляет способы блокировки модулей и т. Д., Что будет важно, если у вас есть подключаемые модули, которые имеют зависимости от других библиотек. – Jesper