Tomcat啓動:java.util.zip.ZipError: invalid LOC header (bad signature)

Tomcat啓動項目報錯:invalid LOC header (bad signature)

問題

如果報錯中沒有提示其他信息,只提示java.util.zip.ZipError:invalid LOC header (bad signature) 或者invalid CEN header (bad signature)。無從下手,那就來看下面的解決方法吧。

原因

原因是maven倉庫中的某個jar包下載不完整或損壞等原因無法正常加載。

解決方法

一個大項目中有很多的jar包,不可能一一排查。下面提供兩個快捷方法。

1、刪除本地maven的\repository庫中所有.lastupdate後綴文件 以及sha1-in-progress爲後綴的文件,重新下載。

當我們使用eclipse下載jar包,有事突然退出,再次進入jar包還是下載不全,可能的原因就是 maven沒有將jar下載完時,會生成一個.lastupdate文件,在校驗sha1碼未完成時會生成sha1-in-progress爲後綴的文件.

解決方法: 使用文件搜索工具(樓主用的是 Everything)輸入.lastupdate刪除所有以.lastupdate結尾的文件; 輸入sha1-in-progress刪除所有以sha1-in-progress結尾的文件。

然後簡單修改.pom(比如加空格) 保存,然後eclipse就會重新下載jar包!


2、檢查項目中有問題的jar包
如果通過第一步,啓動項目還是報錯,可以通過mvn test命令來檢查項目中有問題的jar包,如果想跳過測試,可以使用命令:

mvn test -Dmaven.test.skip=true

也可以通過右擊項目名 -> Run As -> Maven test ,這時控制檯會報哪個jar包出錯。我直接執行Maven test發現控制檯並沒有提示那個jar包出錯,後來我先執行Run As -> Maven clean,然後再執行Run As -> Maven test發現控制檯就有提示哪個jar包出錯了。如下面所示:

[WARNING] 讀取C:\Users\01377806.m2\repository\org\apache\cxf\cxf-core\3.2.5\cxf-core-3.2.5.jar時出錯; invalid CEN header (bad signature)

終於找到罪魁禍首了,然後在maven的本地庫找到對應的jar包刪掉,再重新下載即可。

這個問題折騰了我一天,終於解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章