问题描述
在使用vertx-codegen的@ProxyGen注解自动生成代码的时候,发现IDEA在编译的时候报错:
java: Could not generate element for com.kaopusong.vertx.service.DeliveryAsyncService: null
原因分析:
首先可以确定的是,这肯定是Vertx提供的注释编译器有缺陷,但是当我使用不同版本的IDEA时,发现在2020.2之前版本的IDEA编译正常,2020.2 之后版本的IDEA编译就会报错。
经过一番搜索后发现,从 2020.3 开始,IntelliJ 团队对注释处理器的增量编译进行了改进。那既然无法改变Vertx的注释编译器,直到Vertx修复此问题之前,我们可以通过改变IDEA,来变相达到我们的目的:使编译正常通过
解决方案:
解决的方式有两种:
- 1.将构建操作委托给Maven,如图所示,在箭头所指方向勾选,将构建/运行操作委托给Maven,但要注意,该方法虽然有效,但是构建的速度会较慢
- 2.通过设置IDEA的虚拟机参数,来强制IDEA使用2020.2之前版本的注释处理器,在默认情况下,此参数为True
以上两种方式都可以使用,但是使用方法1的编译速度会比IDEA自身的编译速度慢,所以建议使用方法2-Djps.track.ap.dependencies=false