Я пытаюсь оценить, подходит ли для нашего магазина использование API поиска NetBeans без всей платформы NetBeans.
Пока мне удалось создать проект с таким кодом:
for (SomeInterface si : Lookup.getDefault().lookupAll(SomeInterface.class)) {
si.doSomething();
}
Я также создал несколько других проектов, каждый с классом AnImplementation, реализующим SomeInterface, и сопровождающий файл META-INF / services / path.to.SomeInterface, содержащий строку, ссылающуюся на класс (например, «other.path.to»). .AnImplementation ").
Когда я добавляю эти проекты реализации в библиотеки (зависимости) основного проекта в IDE NetBeans, он работает нормально, и я вижу последовательные результаты doSomething () из обеих реализаций.
Мой вопрос заключается в том, как заставить это работать, не ссылаясь на подпроекты в основном проекте; Банки подпроектов не будут включены в сгенерированный файл основного проекта при сборке, и их можно будет добавлять или удалять по желанию, изменяя результат кода выше.
Если я не ошибаюсь, это поведение, описанное в документации по Lookup API.
Заранее спасибо.
Редактировать : На данный момент я пришел к выводу, что без платформы NetBeans (или OSGi?) Невозможно определить, какие поставщики услуг присутствуют во время запуска. Вам нужно ссылаться на их фляги в вашем classpath и, таким образом, идентифицировать их перед запуском. Не стесняйтесь доказать, что я неправ.