1. 现象
使用Gradle编译项目报找不到符合@SuperBuilder,如下:
2. 原因分析
刚开始以为是Lombok的使用或配置问题,在网上搜索了各自解决方案,如配置annotationProcessor,lombok版本不对等等,都无法解决该问题。
通过仔细观察所有报错的信息,发现有一个MapStruct的Converter报错,如下:
将该Converter修改正确后,再次编译,错误消息。
3. 经验总结
由于IDE本身或组件间兼容性的问题,系统在编译或运行过程中出现的错误很可能不是真正的错误,作为一个开发人员一定要仔细观察所有的报错信息,找到根因。
对于这种问题有一种常规的定位方法:
即:
- 小步修改代码
- 运行测试
- 如果测试全部通过,则继续修改下一步,如果测试失败则可以肯定是本次修改的代码引入的问题