首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceLoader未加载新服务

ServiceLoader未加载新服务
EN

Stack Overflow用户
提问于 2016-10-06 19:19:10
回答 1查看 2.1K关注 0票数 3

我的ServiceLoader不想加载我的新服务。我想我已经把所有的东西都设置好了。

Core.Main

代码语言:javascript
复制
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

代码语言:javascript
复制
package service;

public interface IService {
    String sayHi();
}

DbDataBuilder.builder.DbDataBuilder

代码语言:javascript
复制
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

代码语言:javascript
复制
builder.DbDataBuilder

但是当我运行它时,控制台输出是:

代码语言:javascript
复制
Before
After

我做错什么了吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 05:04:40

当构建器在运行时而不是在编译时位于类路径上时,ServiceLoader非常有用。您应该将具有编译范围依赖项的第三个模块添加到核心,并将运行时范围依赖项添加到DbDataBuilder,将Main移动到第三个模块并享受ServiceLoader功能

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39894596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档