所以我正在 Eclipse 中编写一个 webapp,我想在我的一个类中使用服务加载器。问题是在哪里放置 META-INF/services 的东西。从这里(https://stackoverflow.com/a/3421191/2742995)我发现:
但理想的方法是将它放在插件的 jar 文件中。例如,如果您有一个捆绑为 WEB-INF/lib/myplugin.jar 的插件,并且您的插件类是 com.example.plugin.MyPlugin 那么 jar 应该有一个结构:
myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin
所以我在包含 serviceloader 东西的模块中,来源: src/main/java/ 包含
- vcs.validation.*(包含源代码)
一个文件夹: META-INF/services/vcs.validation.javatests.JavaTest 包含:
- Test1(读取 vcs.validation.javatests.Test1)和
- Test2(读取 vcs.validation.javatests.Test2)
(接口vcs.validation.javatests.JavaTest有两个实现类Test1和Test2)
但是,当我将整个 webapp 打包为一个 war 并在 tomcat 中部署时,web-app/WEB-INF/classes/ 文件夹不包含任何 META-INF/services/。我在这里做错了什么?