問題:
xx.jar; invalid LOC header(bad signature)
發生場景:
使用Maven下載依賴包後,啓動Spring應用或是啓動Tomcat等服務器時。
原因及解析:
錯誤的內容是: xx.jar這個文件出錯,無效的LOC頭(錯誤的簽名)。
LOC可以認爲是 Length Of Code的簡寫。也就是文件的大小, 那這裏的簽名有做和解釋呢?
出於安全性考慮, 一般的的庫或軟件在發佈的時候會使用哈希算法(比如MD5)對文件進行哈希運算併產生一個消息摘要,如果這個文件被篡改,重新生成的Hash碼肯定不一樣。關於消息摘要的內容可以參考:
消息摘要(Message Digest)及其算法https://blog.csdn.net/oscar999/article/details/104071469
基於以上考慮, 推斷錯誤的原因就是該jar的下載有問題, 到本地Maven庫中找到該文件, 使用壓縮工具(比如WinZip)打不開,報錯。文件沒有被完整的下載。出現這個問題的原因有可能是:
- 一次下載的依賴包太多
- 網絡不好
- 在Eclipse中中斷下載
該問題在初始化項目的時候出現概率較大。
解決方法:
在本地Maven庫找到該jar 的目錄, 刪除之後 使用mvn eclipse:eclipse
或 mvn install
等命令重新下載。