Set supported = new HashSet();
supported.add(Bridge.class.getCanonicalName());
return supported;
}
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {
System.out.println(“TestAnnotationProcessor process”);
return true;
}
}
运行构建后compileReleaseJavaWithJavac
过程中没有先吐我 Annotation Processor 的任意一行日志,直接报错找不到我注解处理器产物类引用(即直接进行了 compile class 环节)。
你懵逼吗?反正我懵逼了!打印日志不好使了,哈哈,环境确认没问题,什么鬼,直接越过 Annotation Processor 进行 compile 了。
这时候就需要你稍微深入定位分析(撸javac
源码的巨佬请自行飘过),前提就是你需要熟悉下 Annotation Processor 基本原理,然后我们通过一些额外的javac
详细日志进行举例分析。
Annotation Processor 机制
注解和注解处理器是 JDK5 引入的机制,主要用来为类、方法、字段和参数等 Java 结构提供额外的信息。譬如常见的@