是否可以ServiceLoader在init(ProcessingEnvironment)注释处理器的方法中使用?
interface Service {}
class AnnotationProcessor extends AbstractProcessor {
public static void main(String[] args) {
ServiceLoader<Service> loader = ServiceLoader.load(Service.class);
System.out.println("Found Services:");
for (Service service : loader) {
System.out.println(service);
}
}
@Override
public synchronized void init(ProcessingEnvironment env) {
super.init(env);
ServiceLoader<Service> loader = ServiceLoader.load(Service.class);
System.out.println("Found Services:");
for (Service service : loader) {
System.out.println(service);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
运行main方法会生成我在META-INF/services文件中指定的服务.但是,当该init(ProcessingEnvironment)方法作为另一个项目的构建的一部分调用时,它不会列出任何服务.
有没有办法让这项工作?