Ungültiger LOC-Header(Bad Signature) Fehler in Java

Sheeraz Gul 20 Juni 2023
  1. Ungültiger LOC-Header (schlechte Signatur) in Java
  2. Löschen Sie das lokale Repository
  3. Löschen Sie die beschädigte jar-Datei
  4. Validieren Sie die MD5- und SHA1-Prüfsummen
Ungültiger LOC-Header(Bad Signature) Fehler in Java

Dieses Tutorial demonstriert Javas Fehler ungültiger LOC-Header (schlechte Signatur).

Ungültiger LOC-Header (schlechte Signatur) in Java

Der Fehler invalid LOC header (bad signature) tritt immer dann auf, wenn eine jar-Datei in unserem lokalen Maven-Repository beschädigt ist. Das lokale Repository ist die heruntergeladene Datei aus einem Maven-Projekt in unserem Dateisystem.

Jedes von Maven heruntergeladene Element enthält seine MD5- und SHA1-Dateien.

Der Zweck dieser MD5- und SHA1-Dateien besteht darin, die Originalität und Integrität der Originaldateien sicherzustellen. Da der Fehler in Netzwerken und Dateisystemen auftreten kann, können diese Prüfsummendateien auch beschädigt werden, sodass sie nicht mit dem Original übereinstimmen.

Normalerweise tritt in dieser Situation der Fehler ungültiger LOC-Header (schlechte Signatur) auf. Nachfolgend finden Sie Szenarien und Lösungen für diesen Fehler.

Löschen Sie das lokale Repository

Wie aus dem Namen hervorgeht, müssen wir das gesamte lokale Repository löschen und ein neues Maven-Projekt erstellen. Dadurch werden alle Maven-Repository-Dateien entfernt, die Projektdateien erneut heruntergeladen und der Cache gelöscht.

Der folgende Befehl kann das Repository löschen.

rm -rf ${LOCAL_REPOSITORY}

Wir können das lokale Repository in der Datei settings.xml angeben. Der Standardpfad für das lokale Repository ist ${user.home}/.m2/repository.

Löschen Sie die beschädigte jar-Datei

Wenn wir die beschädigte jar-Datei finden, können wir sie löschen und das Problem wird gelöst. Der Maven-Ausgabestapelbefehl kann uns das beschädigte jar anzeigen, wenn es nicht verarbeitet werden kann.

Wir können die Protokollierung aktivieren, indem wir ein -X in den Build-Befehl einfügen.

mvn -X package

Der obige Befehl zeigt die beschädigte jar-Datei in einer Protokolldatei an. Wir können diese jar-Datei im Maven-Repository finden und löschen.

Der Maven lädt die Datei beim Erstellen erneut herunter. Die Integrität des Archivs kann mit dem Befehl zip -T getestet werden.

find ${LOCAL_REPOSITORY} -name "*.jar" | xargs -L 1 zip -T | grep error

Validieren Sie die MD5- und SHA1-Prüfsummen

Die beiden oben genannten Lösungen können den Maven dazu bringen, die jar-Dateien erneut herunterzuladen. In diesen Fällen kann derselbe ungültige LOC-Header beim zukünftigen Download auftreten.

Wenn Sie Maven so konfigurieren, dass die MD5- und SHA1-Prüfsummen validiert werden, während das Element aus dem Remote-Repository heruntergeladen wird, wird der Fehler ungültiger LOC-Header verhindert.

Die Optionen –strict-checksums oder -C werden dem Maven-Befehl hinzugefügt, was dazu führt, dass Maven den Build fehlschlägt, wenn die Prüfsummen nicht mit dem Wert der Prüfsummendateien übereinstimmen.

Dies kann auf zwei Arten erfolgen, um den Build fehlschlagen zu lassen oder ihn zu warnen; Die Warnoption ist die Standardeinstellung. Verwenden Sie den folgenden Befehl, um fehlzuschlagen oder zu warnen.

-C,--strict-checksums

-c,--lax-checksums

Da Maven die Signaturdateien benötigt, während die Artefakte in das Repository hochgeladen werden, befinden sich möglicherweise Artefakte im Repository, die keine Signaturdateien enthalten. Aus diesem Grund ist die Warnoption die Standardeinstellung.

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

Verwandter Artikel - Java Error