Я пишу веб-приложение в Eclipse.
Я пытаюсь использовать класс ServiceLoader для загрузки некоторых плагинов.
В документах для ServiceLoader говорится, что я должен поместить файл в META-INF/services.
Я поместил файл в папку WebContent/META-INF/service, но когда я запускаю тест JUnit через Eclipse, это не находит плагинов.
Действительно ли это - корректное местоположение для файла?
Кроме того, как я могу получить больше информации об отладке от ServiceLoader, такого как папки, в которых это ищет файл?
META-INF/services должен находиться в корне jar-файла или каталога ресурсов в classpath загрузчика классов, используемого для поиска плагинов.
Если у вас веб-приложение, то структура каталогов может быть такой:
<webappname>/WEB-INF/classes/META-INF/services
Но идеальный способ - иметь его в jar-файле вашего плагина. Например, если у вас есть плагин в комплекте как WEB-INF/lib/myplugin.jar
, а класс вашего плагина com.example.plugin.MyPlugin
Тогда jar должен иметь структуру:
myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin
Сделав это, вы можете получить загрузчик сервисов, используя загрузчик классов вашего веб-приложения