首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceLoader找不到任何服务

ServiceLoader找不到任何服务
EN

Stack Overflow用户
提问于 2022-02-07 18:27:28
回答 1查看 289关注 0票数 2

我面临一个ServiceLoader找不到提供服务的问题。

我已经通过常规项目和以下来源进行了测试:

代码语言:javascript
复制
// test/Tester.java
package test;

public interface Tester {
}

// test/TesterImpl.java
package test;

public class TesterImpl implements Tester {
}

// test/Runner.java
package test;

import java.util.ServiceLoader;

public class Runner {
    public static void main(String[] args) {
        var loader = ServiceLoader.load(Tester.class);
        for (var tester : loader) {
            System.out.println(tester);
        }
    }
}

// module-info.java
import test.Tester;
import test.TesterImpl;

module module {
    uses Tester;
    provides Tester with TesterImpl;
}

上面的输出类似于test.TesterImpl@1fb3ebeb,证明它可以按需要工作。

当我试图在通过maven编译器插件运行的ServiceLoader.load(...)中使用AbstractProcessor时,同样的方法也无法奏效。处理器将返回一个空迭代器。要使它在注释处理器中的行为方式与上面的情况相同,需要做些什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 15:21:04

这个问题的THe解决方案是指定一个类加载器--似乎注释处理器使用的类加载器与我试图从其中加载服务的类不同。解决办法如下:

代码语言:javascript
复制
ServiceLoader.load(MyService.class, MyAnnotationProcessor.class.getClassLoader())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71023598

复制
相关文章

相似问题

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