IDEA2020.1版編譯項目時報lombok包不存在的錯誤
解決方法:重新確認maven的setting.xml中LocalRepository指向的路徑是否存在並可訪問
1. 主訴:
- windows OS,jdk1.8,maven3.6.3,IDEA2020.1
-
pom依賴項: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency>
- lombok plugins-0.3.0,正常安裝
- 在file>setings>build>compiler>Annotation processing中Enable annotation processing
- 在代碼編輯時,正常import lombok
- 在External Libraries中能夠正常看到lombok的jar包
2. 症狀:
項目編譯不通過,報Error:java: 程序包lombok不存在
,嘗試各大論壇的解決方案均失敗
3. 問題排查:
項目使用了本地自行安裝配置的maven3.6.3,非IDEA自帶的版本,並在setting.xml中配置了localRepository(指向LocalWarehouse)和mirrors(指向阿里雲)。而IDEA-2020.1版本卻無法識別自行設置的localRepository,導致安裝在maven本地倉庫的jar依賴項在編譯時無法被掃描到,出現包不存在的錯誤。
4. 解決方法:
將setting.xml內的localRepository項注釋,使得idea使用自帶的.m2倉庫,即可完美解決該問題。
5. 問題重新定位
經資深后端工程師指點后,發現該問題的根本原因是localRepository所配置的路徑出錯(誤用了雙正斜杠’//’)。在windows OS,正確的路徑分割符是使用雙反斜杠’\\‘或單正斜杠’/’;在linux OS,則只能使用單正斜杠’/’。注:下圖配置源自setting.xml文件。我使用的是自己安裝的maven,故該xml文件在maven的安裝路徑下。
若使用IDEA自帶的maven,其路徑一般為C:\user\Admnistrator.m2\setting.xml
在localRepository路徑配置正常的情況下,自行安裝的Localwarehouse倉庫和.m2\Repository倉庫都可以使用!
6. 總結
以后再次遇到類似故障時,應當冷靜地分析,從問題的根源出發。如編譯時找不到jar包,要排除該包是否在倉庫中存在;倉庫的引用路徑是否有誤;若倉庫是在C盤中創建的,還要考慮文件權限問題。
上述方法適用於maven倉庫找不到軟件包的錯誤。