前言
mvn install
或mvn package
之后报“Cannot find symbol”错误,这个问题一般有几种原因:
- 类的包名有误
- maven-complier-plugin版本不兼容:如果是jdk1.8的代码,compiler也应该是对应的版本
- 本地maven仓库旧jar包未清除:
mvn clean install
- IDE缓存未刷新:如IDEA,File->Invalidate Caches/Restart,可清除IDE的缓存
但笔者在尝试了上述所有方法之后,编译仍然报错。
原因
笔者重新检查了代码的所有变更,发现在pom中引进了新的依赖,即lombok(利用其@Data注解可动态生成类的setter/getter等)。stash所有变更之后,笔者仅保留了lombok注解的类和调用方法,最后发现是调用方法中找不到注解类的setter方法。
原因简单地来说,就是maven-compiler-plugin没有使用lombok的Annotation Processor去动态生成setter/getter方法,详见1。
解决方法:
- 升级maven-compiler-plugin至3.5以上
- 降级lombok至1.14.8以下
https://stackoverflow.com/a/47684351 ↩︎