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:userAdmnistrator.m2setting.xml
在localRepository路径配置正常的情况下,自行安装的Localwarehouse仓库和.m2Repository仓库都可以使用!
6. 总结
以后再次遇到类似故障时,应当冷静地分析,从问题的根源出发。如编译时找不到jar包,要排除该包是否在仓库中存在;仓库的引用路径是否有误;若仓库是在C盘中创建的,还要考虑文件权限问题。
上述方法适用于maven仓库找不到软件包的错误。