Java での無効な LOC ヘッダー(不正な署名) エラー

Sheeraz Gul 2023年6月20日
  1. Java の無効な LOC ヘッダー (不正な署名)
  2. ローカル リポジトリを削除する
  3. 破損した jar ファイルを削除する
  4. MD5 および SHA1 チェックサムを検証する
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 Gul
Sheeraz Gul avatar Sheeraz Gul avatar

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

関連記事 - Java Error