问题描述
在开发中有一些问题是很头痛的,jar包依赖就是其中之一,个别jar包依赖我们无论怎么刷新项目,重启编译器,删除jar包通过Maven重新下载依赖都不能解决。
如下图就是典型的依赖不能被识别: 点击刷新,重新下载依赖都没用,依赖始终不能被识别
前往本地仓库(默认在:C:\Users\cm.m2\repository目录下面)查看依赖包,发现是有的:
删除后继续下载同样如此
问题分析
这个问题也困扰了我许久,因为我的依赖包本地明明是有的,但是Maven就是不能解析识别,我删除后继续刷新,依然是这样。
然后我就想到了对比一下可以正常识别的版本和不能识别的版本的依赖:
不难看出,可以被识别的依赖和不能被识别的依赖包还是有所不同的,首先jar包名字就不同,然后就是有pom文件,依赖不能被Maven解析应该就是jar包不完整的问题吧,然后就是为什么会出现这种问题呢?(我不懂,就暂且归结为网络问题吧!,网络不稳定,或者我们中途停止了jar包的下载导致下载的包不完整),删除jar包后在项目中重新下载为什么也会这样呢?(我的认知依然只能归结于网络,多次刷新依然这样,可能就不是网络问题了,如果有知道原因的大神欢迎留言指教)
解决方案
对于以上这种问题,肯定有解决方案的,不可能因为一两个jar包没有下载直接就把项目都给重构或者停止了。经验丰富的开发者肯定有一套精准快速解决这类问题的方法,本人看了无数篇博客,依然没有找到好使的方法。在不断的探索下,我使用了一个比较笨拙的方法:
1. 直接在Maven中央仓库搜索我们需要的jar包(Maven中央仓库)
如我的不能被Maven识别的jar包:thymeleaf-extras-java8time
2. 点击需要的jar包名称进入版本库
3. 点击对应版本的包进入如下界面点击View All(英语不好,应该是预览所有之类的意思,点一下)
-
进入一个有很多链接的界面
-
下载ZIP文件
-
下载ZIP文件解压
这个目录里面包含了相关jar包的使用说明以及它的jar包
-
将本地仓库的旧的不能识别的jar包清空
-
将解压后的dist目录下面的jar包全部拷贝到本地仓库对应目录
-
重启Idea开发工具(一定要重启,一定要重启)
最后我们的问题得以解决,jar包可以被识别了,爆红消失了
总结
Maven依赖不能被识别,爆红什么的就是没有包,或者包不完整。在依赖版本定格,不允许或者不能切换其它版本的情况下,我们可以通过这样一种复杂但是有效的方法解决这类问题。如果大佬有更好的解决这种问题的方式,欢迎留言指教。