Java 中的服务加载程序 Class,META-INF/services 文件夹有问题

Service Loader Class In Java, Having Issue with META-INF/services folder

我被困在服务加载器中 class(java) 谁能帮忙,这是我的代码和附带的图片。 看图完全理解并告诉我问题是什么

接口代码

package ServiceLoader_.SL;

interface Account {
    String getMessage();
}

Class 实现该接口

package ServiceLoader_.SL;

public class Message implements Account {

    @Override
    public String getMessage() { 
        return "Hello";
    }
}

主要class

package ServiceLoader_.SL;

import java.util.ServiceLoader;

public class main {
    public static void main(String[] args) {
        ServiceLoader<Account> ac = ServiceLoader.load(Account.class);
        Account ab = ac.iterator().next();
        if(ac.iterator().hasNext()){
            System.out.println("hay^");
        }
    }
}

给出错误,尝试访问 ac.iterator().next()[=17 时找不到此类元素=]

点击 Here查看图片

根据 ServiceLoader 的文档指定, 提供程序配置文件 必须是 class 路径的一部分,对于 ServiceLoader<Account>将被解析为

META-INF/services/ServiceLoader_.SL.Account

根据我从图像中推断出的内容,您的文件似乎位于

ServiceLoader_/META-INF/services/ServiceLoader_.SL.Account

ServiceLoader 实现不知道,因此它不会定位(因此不提供)实现 class ServiceLoader_.SL.Message.

要解决此问题,您必须将 META-INF 移动到 class 路径根目录。由于我不认识图像中显示的 IDE,所以我不能说如何做到这一点。