Java での無効な LOC ヘッダー(不正な署名) エラー
このチュートリアルでは、Java の無効な LOC ヘッダー (無効な署名)
エラーについて説明します。
Java の無効な LOC ヘッダー (不正な署名)
invalid LOC header (bad signature)
エラーは、ローカルの Maven リポジトリ内の jar
ファイルが破損している場合に発生します。 ローカル リポジトリは、ファイル システムの Maven プロジェクトからダウンロードされたファイルです。
Maven がダウンロードしたすべてのアイテムには、MD5 および SHA1 ファイルが付属しています。
これらの MD5 および SHA1 ファイルの目的は、元のファイルの独自性と完全性を確保することです。 エラーはネットワークやファイル システムで発生する可能性があるため、これらのチェックサム ファイルも破損し、元のファイルと一致しなくなる可能性があります。
通常、この状況では無効な LOC ヘッダー (無効な署名)
エラーが発生します。 以下に、このエラーのシナリオと解決策を示します。
ローカル リポジトリを削除する
名前から明らかなように、ローカル リポジトリ全体を削除し、新しい Maven プロジェクトを作成する必要があります。 これにより、すべての Maven リポジトリ ファイルが削除され、プロジェクト ファイルが再度ダウンロードされ、キャッシュが削除されます。
次のコマンドでリポジトリを削除できます。
rm -rf ${LOCAL_REPOSITORY}
settings.xml
ファイルでローカル リポジトリを指定できます。 ローカル リポジトリのデフォルト パスは ${user.home}/.m2/repository
です。
破損した jar
ファイルを削除する
破損した jar
ファイルが見つかった場合は、それを削除して問題を解決できます。 Maven output stack コマンドは、処理に失敗したときに破損した jar
を表示することがあります。
ビルド コマンドに -X
を追加することで、ログを有効にすることができます。
mvn -X package
上記のコマンドは、破損した jar
ファイルをログ ファイルに示します。 Maven リポジトリでその jar
ファイルを見つけて削除できます。
Maven はビルド時にファイルを再ダウンロードします。 アーカイブの整合性は、zip -T
コマンドを使用してテストできます。
find ${LOCAL_REPOSITORY} -name "*.jar" | xargs -L 1 zip -T | grep error
MD5 および SHA1 チェックサムを検証する
上記の 2つの解決策により、Maven は jar
ファイルを再ダウンロードできます。 このような場合、将来のダウンロードで同じ無効な LOC ヘッダー
が発生する可能性があります。
リモート リポジトリからアイテムをダウンロードするときに MD5 および SHA1 チェックサムを検証するように Maven を構成すると、無効な LOC ヘッダー
エラーを防ぐことができます。
–strict-checksums
または -C
オプションが Maven コマンドに追加されます。これにより、チェックサムがチェックサム ファイルの値と一致しない場合、Maven はビルドに失敗します。
これには、ビルドを失敗させるか、警告するという 2つの方法があります。 warn オプションがデフォルトです。 以下のコマンドを使用して、失敗または警告します。
-C,--strict-checksums
-c,--lax-checksums
Maven はアーティファクトをリポジトリにアップロードする際に署名ファイルを必要とするため、署名ファイルを持たないアーティファクトがリポジトリに存在する可能性があります。 そのため、警告オプションがデフォルトになっています。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook