Compilerfehler "Archiv für erforderliche Bibliothek konnte nicht gelesen werden" - Spring Tool Suite


74

Ich beginne mit der Konfiguration meiner Entwicklungsumgebung und verwende Spring Tool Suite 2.8.1 zusammen mit m2E 1.01.

Soweit ich das beurteilen kann, diktiert mein Maven POM (zusammen mit m2E smarts) meine Projektbuildkonfiguration und -abhängigkeiten, da dies ein Maven-Projekt ist (mein erstes).

Was ich wissen möchte, ist, warum meine IDE Java Build-Probleme anzeigt, die lauten "Archiv erforderlich für Bibliothek Bibliothek / Pfad / somejar.jar kann nicht gelesen werden oder ist keine gültige Zip-Datei", wenn ich die Jars in meiner .m2 sehen kann Repository?

Alle Fehler betrafen die Commons-Protokollierung: 1.1.1, die ich in meinem Eltern-Pom ausgeschlossen habe. Dies war eine transistive Abhängigkeit über Spring-Context-Support: 3.0.5. Ich habe diese Bibliothek von meinem Build ausgeschlossen und jetzt beziehen sich die Fehler auf die Spring-Context-Support-Bibliothek.

Ich habe einen Screenshot zur Veranschaulichung angehängt.

Marker


Sie müssen das installZiel für maven ausführen : Suchen Sie nach dem Kontextmenü für m2e. Dadurch werden alle fehlenden Abhängigkeiten abgerufen.
dma_k

2
Danke dma_k, ich habe es versucht, aber ohne Erfolg. Das Glas befindet sich in meinem .m2-Repository. Ich weiß nur nicht, warum es nicht gelesen wird.
Totalcruise

Wenn JAR-Dateien vorhanden sind, versuchen Sie, Ihr Projekt zu aktualisieren. Normalerweise hilft das.
dma_k

Okay, das hat geholfen - andere Fehler jetzt - aber das hat geholfen. Danke
totalcruise

Antworten:


90

Tatsächlich zwischenspeichern IDEs häufig das lokale Repository (Eclipse macht etwas Ähnliches, und ich muss Eclipse neu starten).

Ein hässliches Maven-Verhalten, das auftreten kann, besteht darin, dass Maven eine leere Version der fehlenden Abhängigkeit (Ordner mit Metadaten, aber ohne JAR) erstellt und Ihr .m2-Repository manuell bereinigen muss, wenn Sie eine Abhängigkeit deklarieren, bevor Sie sie tatsächlich installieren .

Drittens kann ein installiertes Archiv (jar ...) beschädigt werden. Versuchen Sie daher, es mit einem beliebigen Archiv-Tool (7zip ...) zu öffnen, um es zu testen, und löschen Sie den gesamten Ordner, wenn das Archiv beschädigt ist.


14
Das einfache Neustarten von Eclipse hat für mich funktioniert, nachdem ein vorhandenes Projekt zu einem neuen Git-Repo hinzugefügt wurde. Danke +1
pjco

9
Scheint ein bekannter Fehler bei Helios zu sein (nicht sicher, ob er bei Juno existiert). bugs.eclipse.org/bugs/show_bug.cgi?id=375249 . Nur das Löschen des Projekts (nicht des Inhalts) und das erneute Importieren des vorhandenen Projekts in den Arbeitsbereich können das Problem beheben, wenn das JAR gültig ist.
dfdumaresq

3
Eclipse Relaunching funktioniert nicht für mich, Löschen / Importieren funktioniert
Alex

10
Das Verzeichnis manuell zu bereinigen schien für mich zu funktionieren. Einfach rm -rf ~/.m2/repository/<path of dependency>(Linux / Mac) ist alles, was benötigt wird.
Paul Richter

17

In meinem Fall musste ich alle Dateien im .m2\repositoryOrdner manuell löschen und dann die Eingabeaufforderung öffnen und den mvn -installBefehl in meinem Projektverzeichnis ausführen .


on ubuntu mvn -installsagt, dass es kein gültiger Befehl ist. Ich habe gerade alle Dateien in gelöscht .m2\repositoryund das Maven-Projekt von IDE (STS) mit Alt + F5 aktualisiert. Aktivieren Sie dann "Aktualisierung von Snapshots / Releases erzwingen" und dann OK ... habe mein Problem gelöst. DANKE :)
Vaibhav Miniyar

9

Ich habe Eclipse als IDE verwendet und den gleichen Fehler erhalten. Ich musste Project-> Maven-> Update Project ausführen. Aktivieren Sie alle Kontrollkästchen unten, außer "offline". die eine "Aktualisierung von Snapshots / Releases erzwingen" und klicken Sie auf OK. Hat den Clean Build für das Projekt erneut durchgeführt.


5

Löschen Sie beschädigte Dateien aus Ihrem lokalen .m2-Repository und Ctrl+ F5(Update Maven Project) in Eclipse / STS. Diese Dateien werden heruntergeladen und installiert.


Ich denke, es ist ALT + F5
Bala

3

Das hat bei mir funktioniert.

  1. Schließen Sie Eclipse
  2. Löschen Sie ./m2/repository
  3. Wenn Sie Eclipse öffnen, werden automatisch alle Gläser heruntergeladen
  4. Wenn das Problem weiterhin besteht, klicken Sie mit der rechten Maustaste auf Projekt> Maven> Projekt aktualisieren ...> Aktivieren Sie "Aktualisierung von Snapshots / Releases erzwingen".

2

Für Googler:

In meinem Fall hatte ich versehentlich versehentlich eine Java-Klasse zum Erstellungspfad hinzugefügt, während ich mich in Eclipse umgesehen habe. Durch einen Blick auf 'Buildpfad konfigurieren ...> Bibliotheken habe ich die Täterklasse entfernt und habe jetzt nur noch die

  • JRE-Systembibliothek
  • Maven-Abhängigkeiten

und nichts beschwert sich.


Ich hatte ein ähnliches Problem, bei dem das Hinzufügen von application.properties zu einem Quellordner dazu führte, dass es als Anwendungsbibliothek in Eclipse Oxygen hinzugefügt wurde. Es wurde der Fehler Archiv für die erforderliche Bibliothek erzeugt: 'src / main / resources / application.properties' im Projekt kann nicht gelesen werden oder ist keine gültige ZIP-Datei. Durch Entfernen dieser Abhängigkeit vom Erstellungspfad wurde das Problem behoben.
JE Carter II

2

Die folgenden Schritte haben mein Problem behoben.

  1. Wechseln Sie in den Ordner ./m2/repository.

  2. Wechseln Sie in den entsprechenden Archivfehlerordner.

  3. Stellen Sie sicher, dass eine Zip-Datei vorhanden ist.

  4. Fehlernamenordner löschen.

  5. Kommen Sie nun zu Eclipse Project - Rechtsklick - Maven -> Projekt aktualisieren.

Der obige Trick funktioniert bei mir.


1

In meinem Fall habe ich alle vorgeschlagenen Tipps ausprobiert, aber der Fehler blieb bestehen. Ich habe das Ändern mit einer neueren Version gelöst und diese in die pom.xml geschrieben. Danach ist jetzt alles in Ordnung.


1

Ich habe das lokale Maven-Repository gelöscht. Klicken Sie dann einfach mit der rechten Maustaste auf das Projekt -> Maven -> Projekt aktualisieren ... Wählen Sie alle betroffenen Projekte aus und klicken Sie auf OK.


1

Ich hatte das gleiche Problem mit meinem Projekt.

Mein Projekt konnte dieses Archiv nicht finden: -

C:\Users\rakeshnarang\.m2\repository\org\hibernate\hibernate-core\5.3.7.Final

Ich ging in dieses Verzeichnis und löschte diesen Ordner.

Ging zurück zu Eclipse und drückte ALT + F5, um das Projekt zu aktualisieren.

Die JAR-Datei wurde erneut heruntergeladen und das Problem behoben.

Sie sollten dies versuchen.



0

Ich war mit diesem Problem konfrontiert. Ich hatte "Archiv für erforderliche Bibliothek spring-boot-devtools kann nicht gelesen werden oder ist keine gültige ZIP-Datei" und die Lösung war wie folgt: - 1- Bestimmen Sie die Abhängigkeitsnamen, die Probleme haben (für den Fall, dass es sich um Spring-Boot handelt). devtools). 2- Sonnenfinsternis schließen. 3- Suchen Sie in Ihrer .m2-Datei nach diesen Abhängigkeiten (nach Namen). 4- Löschen Sie diese Ordner. 5- Öffnen Sie Eclipse erneut und lassen Sie Maven Ihre Abhängigkeiten erneut erstellen.


0

Ok, ich hatte das gleiche Problem mit STS auf einem Mac und löste es, indem ich alle Dateien im Repository-Ordner löschte und in der STS-IDE auf das Projekt und dann auf Maven -> Projekt aktualisieren klickte. Nehmen Sie sich ein paar Minuten Zeit, um alle Abhängigkeiten herunterzuladen, und das Problem ist behoben.


0

Ich stehe vor dem gleichen Problem. Ich habe das lokale Repository gelöscht und die ID neu gestartet. Es hat gut funktioniert.


0

Hatte gerade dieses Problem auf Indigo SR2. Es tauchte auf, nachdem ich ein überflüssiges Glas aus dem Klassenpfad (Erstellungspfad) entfernt hatte. Ein Neustart von Eclipse hat nicht geholfen. Das Glas wurde wieder zum Erstellungspfad hinzugefügt ... Fehler behoben. Entfernte das Glas noch einmal und diesmal wurde ich von einer weiteren Beschwerde verschont.


0

Keine der oben genannten Lösungen hat meinem Problem geholfen. Ich habe es behoben, indem ich alle Dateien im Ordner {projectworkspace} /. Metadata AND im Ordner {location} /. M2 gelöscht habe und Eclipse jedes einzelne Element erneut herunterladen ließ. Hoffe das hilft jemandem, Prost!


0

Als ich die Fehlermeldung "Archiv für erforderliche Bibliothek konnte nicht gelesen werden" erhielt, löste ich das Problem, indem ich die fraglichen JARS aus dem Erstellungspfad des Projekts entfernte und sie dann mithilfe von "Externe Jars hinzufügen" wieder hinzufügte (Navigieren) in den gleichen Ordner, in dem sie sich befanden). Die Verwendung der Schaltfläche "Gläser hinzufügen" würde nicht funktionieren, und der Fehler wäre weiterhin vorhanden. Die Verwendung von "Externe Gläser hinzufügen" funktionierte jedoch.


0

Dies kann daran liegen, dass Sie Ihren Web-App-Bibliotheken die Datei spring-licence.txt hinzugefügt haben.

Ich hatte ein ähnliches Problem und löste es nach dem Entfernen dieser Textdatei. In Bibliotheken wird nur eine JAR-Datei erwartet.


0

Alternativ funktionierten die folgenden Befehle auch für mich:

mvn -s settings.xml eclipse:clean
mvn -s settings.xml eclipse:eclipse

0

Führen Sie im Fall von VSCode die folgenden Schritte aus:

  1. Navigieren Sie zu dem entsprechenden Ordner, der das beschädigte Glas enthält
  2. Löschen Sie nur das Glas
  3. mvn sauber
  4. mvn kompilieren

Das hat bei mir funktioniert.


0

Lesen Sie das Problem im Abschnitt Probleme, identifizieren Sie, welche Abhängigkeit nicht gelesen werden kann, und gehen Sie dann zum Maven-Repository .m2 \ Repository -> 1) Überprüfen Sie die Abhängigkeiten und löschen Sie sie aus dem Ordner. 2) Gehen Sie zu STS / Eclipse -> Klicken Sie auf Maven. > Projekt aktualisieren -> Wählen Sie die Aktualisierung von Snapshots / Releases erzwingen und klicken Sie auf OK.

oder löschen Sie die Abhängigkeiten aus dem .m2 / Repository und erstellen Sie den Maven neu -> aktualisieren Sie das Maven-Projekt


0

Dies passiert, wenn Eclipse es vermasselt. Löschen Sie alle Dateien in:

workspace/.metadata/.plugins/org.eclipse.jdt.core
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.