前言
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 ↩︎