所以我在Eclipse中编写一个webapp,我想在我的一个类中使用serviceloader。问题是放置META-INF /服务的东西。从这里(https://stackoverflow.com/a/3421191/2742995)我发现:
但理想的方法是将它放在插件的jar文件中。如果你 有一个插件捆绑为WEB-INF / lib / myplugin.jar,以及你的插件 class是com.example.plugin.MyPlugin然后jar应该有一个 结构:
myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin
所以我在包含serviceloader的模块中有源:src / main / java / contains
一个文件夹:META-INF / services / vcs.validation.javatests.JavaTest包含:
(接口vcs.validation.javatests.JavaTest有两个实现类Test1和Test2)
但是,当我将整个webapp打包为战争并在tomcat中部署时,web-app / WEB-INF / classes /文件夹不包含任何META-INF / services /。我在这里做错了什么?
答案 0 :(得分:0)
结构应该是:
Project
| Module
| | src
| | main
| | java
| | [ source code]
| | resources
| | META-INF
| | services
| | [service files]
而不是:
Project
| Module
| | src
| | main
| | java
| | [source code]
| | META-INF
| | services
| | [service files]
通过这种方式,服务文件不再扩展到webapp / WEB-INF / classes / META-INF / services,而只是生活在根据以下方式打包的jar中:
myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin