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,所以我不能说如何做到这一点。
我被困在服务加载器中 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,所以我不能说如何做到这一点。