ServiceLoader不会加载实施

Hr.*_*rtz 4 java serviceloader

在问这个问题之前,我确实做了很多研究,似乎我缺少了一些东西。我尝试实现ServiceLoader,因此制作了一个示例类:

项目结构

代码很简单:

testInterface.java

package com.test;

public interface testInterface {
    void test();
}
Run Code Online (Sandbox Code Playgroud)

testImpl.java

package com.test;

public class testImpl implements testInterface {

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

} 
Run Code Online (Sandbox Code Playgroud)

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

com.test.testInterface

com.test.testImpl
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

  • 感谢您的回答,我知道这将是一件简单的事情。我在其他视频/帖子中看到了这个项目结构,并认为它是正确的,似乎是错误的。非常感谢! (2认同)