我是阿福,公眾號(hào)「阿福聊編程」作者继阻,一個(gè)在后端技術(shù)路上摸盤(pán)滾打的程序員耻涛,在進(jìn)階的路上,共勉瘟檩!
文章已收錄在 JavaSharing 中抹缕,包含Java技術(shù)文章,面試指南墨辛,資源分享卓研。
明顯的下載失敗
具體表現(xiàn)
在Maven倉(cāng)庫(kù)中如果看到j(luò)ar包或其他相關(guān)文件是以“l(fā)astUpdated”作為擴(kuò)展名結(jié)尾,說(shuō)明jar包或其他相關(guān)文件下載失敗。
原因分析
Maven在下載jar包的過(guò)程中奏赘,文件會(huì)以lastUpdated作為臨時(shí)擴(kuò)展名寥闪。文件下載完成后,Maven會(huì)將“l(fā)astUpdated”擴(kuò)展名去掉磨淌。
如果下載一半連不上網(wǎng)疲憋,導(dǎo)致下載失敗,那么Maven就放任文件保持臨時(shí)擴(kuò)展名“l(fā)astUpdated”不管梁只。
當(dāng)我們下一次強(qiáng)制要求Maven重新下載jar包時(shí)候缚柳,Maven看到這個(gè)文件以“l(fā)astUpdated”結(jié)尾,那么Maven就會(huì)無(wú)視“下載”命令搪锣。
所以對(duì)于以“l(fā)astUpdated”為擴(kuò)展名的文件需要手動(dòng)刪除喂击,然后再讓Maven重新下載。
解決方案
基本做法:刪除以“l(fā)astUpdated”結(jié)尾的文件淤翔,重新下載翰绊。
問(wèn)題:Maven倉(cāng)庫(kù)使用一段時(shí)間后,以“l(fā)astUpdated”結(jié)尾的文件會(huì)非常多旁壮,手動(dòng)刪除不現(xiàn)實(shí)监嗜。
正確做法:借助<code>clearLastUpdated.bat</code>腳本文件批量處理。
clearLastUpdated.bat文件設(shè)置
第一步:將clearLastUpdated.bat文件放入Maven倉(cāng)庫(kù)根目錄,例如:D:\java\repository
第二步:使用文本編輯器打開(kāi)抡谐,修改下面兩項(xiàng),
CLEAR_PATH設(shè)置為Maven倉(cāng)庫(kù)所在盤(pán)符
CLEAR_DIR設(shè)置為Maven倉(cāng)庫(kù)的根目錄裁奇,一定要使用非中文沒(méi)有空格的目錄
SET CLEAR_PATH=D:
SET CLEAR_DIR=D:\java\repository
編輯完成后雙擊,clearLastUpdated.bat文件麦撵,界面輸入
- ? 輸入 1 清理*.lastUpdated *
- ? 輸入 2 查看*.lastUpdated *
- ? 輸入 3 退 出 *
下載完成但內(nèi)部損壞
具體表現(xiàn)
表面上看起來(lái)刽肠,jar包并不是以“l(fā)astUpdated”結(jié)尾,表示已經(jīng)下載完成免胃。但是音五,程序編譯或運(yùn)行的時(shí)候報(bào)錯(cuò)。比如:找不到xxx類錯(cuò)誤羔沙,而且通常這個(gè)類不是我們編寫(xiě)的躺涝;又或者找不到xxx方法,而且通常這個(gè)方法不是我們編寫(xiě)的扼雏。
其他表現(xiàn)往往還體現(xiàn)為一些莫名其妙的錯(cuò)誤坚嗜,特別是往往和我們編寫(xiě)的代碼沒(méi)有直接關(guān)系。
原因分析
- 到Maven倉(cāng)庫(kù)中找到疑似下載失敗的jar包
- 使用文件校驗(yàn)工具文件校驗(yàn)
- 打開(kāi)工具诗充,將要驗(yàn)證的jar包拖拽進(jìn)工具界面苍蔬,比較SHA1值,u 一致:確定jar包下載成功蝴蜓,內(nèi)部正確沒(méi)問(wèn)題碟绑,u 不一致:確定jar包內(nèi)部損壞。
文件校驗(yàn)工具
第一步:我們打開(kāi)第二步:把指定的拖到文件校驗(yàn)工具當(dāng)中
拖綴后
然后打開(kāi).sha1結(jié)尾的文件,例如:aopalliance-1.0.jar.sha1蜈敢,然后比較兩個(gè)SHA1碼是否相等即可
如果不一致辜荠, 根據(jù)依賴信息定位jar包在倉(cāng)庫(kù)里位置,刪除jar,再次重寫(xiě)刷新pom.xml文件抓狭,就可以了伯病。
軟件下載:
clearLastUpdated.bat和文件校驗(yàn)工具 ,提取碼:1da4