我的ServiceLoader不想加载我的新服务。我想我已经把所有的东西都设置好了。
Core.Main
public class Main {
public static void main(String[] args) {
System.out.println("Before");
Iterator<IService> services = ServiceLoader.load(IService.class).iterator();
while (services.hasNext()) {
IService service = services.next();
System.out.println(service.sayHi());
}
System.out.println("After");
}
}Core.service.IService
package service;
public interface IService {
String sayHi();
}DbDataBuilder.builder.DbDataBuilder
package builder;
import service.IService;
public class DbDataBuilder implements IService {
public DbDataBuilder() {
}
public String sayHi() {
return "I am Data Builder";
}
}META-INF/services/service.Iservice
builder.DbDataBuilder

但是当我运行它时,控制台输出是:
Before
After我做错什么了吗?
发布于 2018-04-30 05:04:40
当构建器在运行时而不是在编译时位于类路径上时,ServiceLoader非常有用。您应该将具有编译范围依赖项的第三个模块添加到核心,并将运行时范围依赖项添加到DbDataBuilder,将Main移动到第三个模块并享受ServiceLoader功能
https://stackoverflow.com/questions/39894596
复制相似问题