是否可以在注释处理器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);
}
}
...
}
运行 main 方法会生成我在 META-INF/services 文件中指定的服务。但是,当该init(ProcessingEnvironment)
方法作为另一个项目的构建的一部分被调用时,它不会列出任何服务。
有没有办法使这项工作?