我想弄清楚Java的ServiceLoader。 我设置了一个非常基本的测试实现:
public class BaseThingy {
public BaseThingy(){
Iterator<WriteService> iter = ServiceLoader.load(WriteService.class).iterator();
while (iter.hasNext()) {
WriteService plugin = iter.next();
System.out.print(plugin.getText());
}
}}
接口:
public interface WriteService {
String getText();}
现在,据我所知,我编写了一个实现,并将实现类(没有其他文件或清单?)放入jar中。
项目本身需要一个文件:META-INF \ services \ experimental.plugin.WriteService
在这个文件中,我写了实现的全名(在我的例子中,那就是experimental.plugin.WriteHello)。
现在,我在Intellij中作为IDE工作
我应该把文件放在哪里,我应该把jar放在实现类中?
我没有收到任何错误,但也没有找到任何实施。
或者jar文件毕竟需要额外的东西吗?
答案 0 :(得分:1)
META-INF / services / experimental.plugin.WriteService必须在类路径中以及带有实现的JAR中。