java - ServiceLoader 不加载实现

标签 java serviceloader

在问这个之前我真的做了很多研究,好像我错过了什么。我尝试实现一个 ServiceLoader,因此制作了一个示例类:

Project structure

代码很简单:

testInterface.java

package com.test;

public interface testInterface {
    void test();
}

testImpl.java

package com.test;

public class testImpl implements testInterface {

    @Override
    public void test() {
        System.out.println("test");
    }

} 

Main.java

package com.test;

import java.util.ServiceLoader;

public class Main {

    public static void main(String[] args) {
        ServiceLoader<testInterface> serviceLoader = ServiceLoader.load(testInterface.class);

        serviceLoader.iterator().next().test();
    }

}

com.test.testInterface

com.test.testImpl

我一直在迭代器部分收到 NoSuchElementException,这意味着未加载实现。提前致谢。

最佳答案

将您的 META-INF/services/放入 resources/并将其作为源文件夹添加到 Eclipse 项目中。编译时它会自动包含在 JAR 文件中。

关于java - ServiceLoader 不加载实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425488/

相关文章:

java - 类加载器和服务加载器。使用哪个类加载器?

java - 为什么我的 DataPoints 方法被多次调用?

java - 什么是 NullPointerException,我该如何解决?

java - ServiceLoader使用ClassLoader指向不同的路径

android - 将 'META-INF/services' - 文件保留在 apk 中

Java Swing 获取输入

java - io.rest-assured 和 jayway rest-assured 有什么区别?

java - trustStore 的路径 - 设置属性不起作用?

java - 在类路径上使用模块化 jar 时的潜在问题