第三节 Maven下载失败及其解决
一、正常下载的情况
二、下载失败的第一种情况
1、Maven的行为描述
2、解决办法
3、要求Maven重新下载jar包
三、失败的第二种情况
1、文件校验工具
2、用法
3、原理
4、找到有嫌疑的jar包
5、为什么不建议删整个库

第三节 Maven下载失败及其解决

一、正常下载的情况

  • jar包在下载过程中,jar包的扩展名是xxx.jar.lastUpdated
  • jar包下载成功后,Maven会将lastUpdated扩展名删除,让jar包恢复为xxx.jar这样的名称

二、下载失败的第一种情况

1、Maven的行为描述

  • jar包在下载过程中,jar包的扩展名是xxx.jar.lastUpdated
  • 网络连接丢失,无法继续下载
  • jar包没有下载完,lastUpdated扩展名不会被删除
  • 当我们要求Maven重新下载时,Maven看到这个jar包的扩展名是lastUpdated,Maven就不管了

2、解决办法

手动删除所有以lastUpdated结尾的文件,然后让Maven重新下载。可是当仓库中lastUpdated文件太多的时候,手动删除不可行,所以我们需要借助批处理文件:clearLastUpdated.bat。使用方法:

  • 将clearLastUpdated.bat文件复制到本地仓库的根目录
  • 使用文件编辑打开clearLastUpdated.bat文件
  • 修改下面的内容

SET CLEAR_PATH=设置为本地仓库所在的盘符 SET CLEAR_DIR=设置为本地仓库的根目录的路径
例如:
SET CLEAR_PATH=D: SET CLEAR_DIR=D:\maven-rep1026

  • 在想要执行清理时,双击运行这个文件即可

3、要求Maven重新下载jar包

03.jar包下载失败 - 图1

三、失败的第二种情况

1、文件校验工具

jar包表面上看起来是下载完的状态,结尾并没有“.lastUpdated”扩展名。但是程序运行时找不到这个jar包中的类。例如:针对jar包中的类出现ClassNotFoundException。
03.jar包下载失败 - 图2

遇到类似问题需要先确认一下“有嫌疑”的jar包是否存在内部损坏问题。此时可以使用上面的文件校验工具。
03.jar包下载失败 - 图3

2、用法

  • 打开文件校验工具
  • 将待校验的jar包拖拽到文件校验工具窗口内
  • 将待校验的jar包旁边的*.sha1文件打开
  • 比较两个SHA1值
  • 一致:jar包完好
  • 不一致:jar包损坏

3、原理

HASH加密包括很多具体加密算法,但是所有HASH算法都满足下面特征:

  • 只要输入数据不变,任何时候执行加密,输出不变
  • 输入数据有细微变化,输出数据跟着变化
  • 不可逆,不能通过密文反推回明文
  • 每一种具体的HASH加密算法加密后长度固定

4、找到有嫌疑的jar包

假设现在出现了一个ClassNotFoundException,提示找不到类:org.springframework.expression.Expression。此时我们怀疑这个类所在的jar包下载失败。

  • 窍门1:类所在的package命名往往和jar包坐标的groupId部分类似。
  • 窍门2:在IDEA中按两下Shift键,使用全类名搜索

03.jar包下载失败 - 图4

找到jar包后,点右键→Show in Explorer

  • 窍门3:如果前面的办法都没法定位,只能根据这个类看上去的特征和可能的功能找有可能有关的jar包

5、为什么不建议删整个库

  • 整个库删除后,需要重新下载整个库。此时东边的jar包没有失败,可能西边的jar包会失败。
  • 整个库整体重新下载时,会有很多jar包并行下载的,相对来说并行下载本身就容易丢失数据。

上一节 回目录