我们在使用自定义AbstractProcessor
时,会通过System.out.println();
来输出日志帮助调试。
然后在其他项目里通过annotationProcessor project
来引入这个 AbstractProcessor
。
一切都很正常。在Terminal
能够正常的输出调试日志。
但是当我们的项目使用了kotlin
的时候,就发生了一些改变。
你会发现你的System.out.println();
不再生效了,日志一直不出现,让人抓狂。
及时通过建议将annotationProcessor
替换成kapt
也没有什么卵用。
解决方法很简单,就是将你的System.out.println();
替换掉,使用正确的Messager
对象来输出日志。
private Messager messager;
@Override
public synchronized void init(ProcessingEnvironment processingEnvironment) {
super.init(processingEnvironment);
messager = processingEnvironment.getMessager();
}
private void log(String msg) {
//System.out.println(msg);
messager.printMessage(Diagnostic.Kind.OTHER, msg);
}