问题
I am writing a web app in Eclipse.
I am trying to use the ServiceLoader class to load some plugins.
The docs for ServiceLoader say I need to place a file in META-INF/services.
I have placed the file in the WebContent/META-INF/service folder but when I run the JUnit test via Eclipse it does not find any plugins.
Is this the correct location for the file?
Also, how can I get more debug info from ServiceLoader such as the folders it is searching for the file in?
回答1:
The META-INF/services should be at the root of the jar file or resource directory in the classpath of the classloader used to locate plugins.
If you have a web application, then you can have directory structure like:
<webappname>/WEB-INF/classes/META-INF/services
But the ideal way is to have it in your plugin's jar file. E.g if you have a plugin bundled as WEB-INF/lib/myplugin.jar
, and your plugin class is com.example.plugin.MyPlugin
Then the jar should have a structure:
myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin
Having done that, you can get a service loader using your web application's class loader
来源:https://stackoverflow.com/questions/3420715/where-to-put-serviceloader-config-file-in-a-web-app