今天在构建源码的时候又碰到了明明jar包存在,却报找不到jar异常的问题,当时也是解决了很长时间用了各种方法:把impl文件删除重新生成、清楚缓存、更换一个新的本地仓库地址等,才解决。但是治标不治本,在做其他新项目的时亦或是不久之后又会遇到这种问题。且像这样的问题再网上没有一个明确的答案,所遇到的问题不一样,处理方式也不一样
问题场景
1. 构建源码
2. 导入别人的项目
3. 刚开始还正常,可能上一次运行好好的这次运行就不正常了
问题出现原理分析
首先我们得知道我们是在哪里出现的问题,是在IDE编译的时候,还是在maven编译的时候。
因为idea编译跟maven编译不是一回事。
idea中有个设置是 Delegate ide build/run actions to maven,意思就是将ide构建/运行操作委托给maven。
所以当你用命令行 mvn clean install -X的时候报错的时候,那是maven编译报错。这个时候就得从maven依赖项着手处理了。
当你用命令行mvn clean install -X构建正常的情况下,idea运行方法或者Build module的时候报错,那就说明是IDE编译报错。
解决思路:

标记的地方替换成我们自己的 maven
如果不用 IDEA 自带的 maven,需要注意 IDEA 与 maven 的版本关系,存在兼容关系
IDEA2019、2018、2017版本,推荐用 maven 3.5 或更低版本;IDEA 2019 之后的版本,推荐使用 maven 3.6 及以上版本
最终推荐:用 IDEA 自带的 maven,我们对其进行自定义配置即可(不存在兼容问题)
默认情况下对项目的构建和运行是 IDEA 自己负责的,这样就可能导致构建和运行时无法找到 maven 仓库中的相关 jar 包,从而出现:Error:(6, 34) java: 程序包xxx不存在的错误
进行如下配置,将构建/运行操作委托给 maven,这样依赖的 jar 包都能正确找到

复选框勾上后,构建和运行操作就委托了 maven
注意:如果仓库中的部分jar包是自己手动mvn install:install-file -Dfile=./tools-common.jar -DgroupId=com.xxx -DartifactId=xxx-tools-common -Dversion=1.0-SNAPSHOT -Dpackaging=jar等命令导入至本地仓库的则取消复选框勾选
如果前面方法都试了不管用的话,则需要清楚缓存,重新构建项目,在重新clear、install依赖,一般情况就都能够解决了。