小编bno*_*orm的帖子

在注释处理器中使用ServiceLoader

是否可以ServiceLoaderinit(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)方法作为另一个项目的构建的一部分调用时,它不会列出任何服务.

有没有办法让这项工作?

java annotation-processing serviceloader

3
推荐指数
1
解决办法
582
查看次数