Ich habe einen Fehler in Eclipse erhalten. Was bedeutet diese Fehlermeldung:
Der Typ iglu.ir.TermVector kann nicht aufgelöst werden. Es wird indirekt aus erforderlichen .class-Dateien referenziert
Ich habe einen Fehler in Eclipse erhalten. Was bedeutet diese Fehlermeldung:
Der Typ iglu.ir.TermVector kann nicht aufgelöst werden. Es wird indirekt aus erforderlichen .class-Dateien referenziert
Antworten:
Es bedeutet: "Eine Klasse, die Sie verwenden, benötigt eine andere Klasse, die sich nicht im Klassenpfad befindet." Sie sollten sicherstellen (wie Harry Joy vorschlägt), dass Sie das erforderliche Glas zum Klassenpfad hinzufügen.
Dies ist ebenso wahrscheinlich eine Frage der Verwirrung von Eclipse wie ein tatsächlicher Fehler. Ich habe den Fehler ignoriert und den Webdienst ausgeführt, über dessen EndpointInterface er sich beschwert hat, und er lief einwandfrei, außer dass ich mich jedes Mal mit dem Dialog befassen musste, wenn ich ihn ausführen wollte. Nur ein weiterer undurchsichtiger Fehler, der mir nichts sagt.
Es passiert mir manchmal, dass ich das immer mit dem Befehl "mvn eclipse: clean" behoben habe, um alte Eigenschaften zu bereinigen und dann mvn eclipse: eclipse -Dwtpversion = 2.0 auszuführen (natürlich für Webprojekte). Es sind einige alte Eigenschaften gespeichert, so dass Eclipse manchmal verwirrt ist.
mvn eclipse:clean
und / oder mvn eclipse:eclipse
scheinen der Zaubertrick zu sein, damit es funktioniert.
Ich hatte diesen Fehler aufgrund eines beschädigten lokalen Maven-Repositorys .
Um das Problem zu beheben, musste ich nur in mein Repository gehen und den Ordner löschen, in dem sich die betreffende .jar-Datei befand, und dann eine update maven
in Eclipse erzwingen .
Es hört sich so an, als wäre dies ein bekanntes Problem (Bug 67414), das in 3.0 behoben wurde ... jemand hat kommentiert, dass es auch in 3.4 für ihn auftritt.
In der Zwischenzeit besteht die Problemumgehung darin, die JRE-Systembibliothek aus dem Projekt zu entfernen und sie dann wieder hinzuzufügen.
Here are the steps:
Gehen Sie zu den Eigenschaften des Projekts mit dem Erstellungsfehler (Rechtsklick> Eigenschaften).
Zeigen Sie die Registerkarte "Bibliotheken" im Abschnitt "Erstellungspfad" an
Suchen Sie die "JRE-Systembibliothek" in der Liste (wenn diese fehlt, ist diese Fehlermeldung kein Eclipse-Fehler, sondern ein falsch konfiguriertes Projekt).
Entfernen Sie die "JRE-Systembibliothek"
Klicken Sie auf "Bibliothek hinzufügen ...", wählen Sie "JRE-Systembibliothek" und fügen Sie die entsprechende JRE für das Projekt hinzu (z. B. "Arbeitsbereich-Standard-JRE").
Klicken Sie in der Bibliotheksauswahl auf "Fertig stellen" und in den Projekteigenschaften auf "OK" und warten Sie auf die Neuerstellung des Projekts
Hoffentlich wird der Fehler behoben ...
Dieser Fehler tritt auf, wenn die Klassen in der JAR-Datei nicht der gleichen Struktur wie die Ordnerstruktur der JAR-Datei folgen.
Beispiel: Wenn Ihre Klassendatei das Paket com.test.exam enthält und die aus dieser Klassendatei erstellte class.jar die Struktur test.exam hat ... wird ein Fehler ausgelöst. Sie müssen die Paketstruktur Ihrer classes.jar korrigieren und sie dann in den ecplipse-Erstellungspfad aufnehmen ...
Ich habe diese Ausnahme erhalten, weil Eclipse in einer anderen Version von JDK funktioniert hat, nur auf die richtige Version geändert, sauber und erstellt und funktioniert hat!
Ich hatte einen interessanten Fall dieses Problems mit Eclipse 4.4.2. Mein Projekt (P1) hat auf eine externe Klasse (Projekt P2) mit zwei Methoden mit demselben Namen, aber unterschiedlichen Argumenttypen verwiesen:
public static void setItem(Integer id) …
public static void setItem(Item item) …
Der Typ Item
war in einem dritten Projekt P3 enthalten, das ich hier nicht sichtbar machen wollte. P1 hat nur die erste Methode aufgerufen:
ExternalClass.setItem(Integer.valueOf(12345));
Die zweite Methode, die die Item
Klasse verwendete, wurde also nicht verwendet, und es ist wahr, dass P3 nicht im Kompilierungsklassenpfad enthalten war - warum sollte es verwendet werden, wenn es nicht verwendet wird?
Immer noch sagte mir Eclipse
The type ...Item cannot be resolved.
It is indirectly referenced from required .class files
Das Kompilieren über die Befehlszeile führte zu keinen derartigen Problemen. Durch Ändern des Namens der zweiten Methode (hier nicht verwendet!) Wurde das Problem auch in Eclipse behoben.
Was es für mich reparierte, war right clicking on project > Maven > Update Project
Für mich passiert es, wenn ich mein JDK auf 1.8.0_60 aktualisiere, wobei mein alter Satz von Gläsern schon lange verwendet wird. Wenn ich auf jdk1.7.0_25 zurückgreife, sind alle diese Probleme weg. Es scheint ein Problem hinsichtlich der Kompatibilität zwischen der JRE und den Bibliotheken zu sein.
Ich habe den Fehler erhalten, als ich nur einige SVN-Einstellungen geändert habe und nichts im Code. Nur das Reinigen der Projekte hat den Fehler behoben.
In meinem Fall habe ich ein Projekt erstellt und sein minSdkVersion=9
und erstellt targetSdkVersion=17
. Ich habe automatisch generiert libs/android-support-v4.jar
. Ich musste auch Gebrauch machen ActionBarActivity
mit android-support-v7-appcomapt.jar
. Also habe ich die android-support-v7-appcompat.jar
Datei einfach aus dem android-sdk/extras/andrid/support/v7/appcompat/libs
Ordner kopiert und in meinen Projektordner eingefügt libs
. Und dies verursachte den obigen Fehler. Im Grunde musste ich auch eine android-support-v4.jar
Datei aus android-sdk/extras/andrid/support/v7/appcompat/libs
meinem Projektordner libs
ablegen. Nach meinem Wissen hatte die v7.jar
Datei Abhängigkeiten von der v4.jar
Datei. Also brauchte es eine eigene v4.jar
Datei, anstelle meines Projekts, automatisch erstellte v4.jar
Datei.
Schnell und einfach habe ich es auf diese Weise behoben (ich verwende die ADT-Version: v21.0.0-531062 unter Windows XP Home Edition).
Es hat funktioniert, ABER das Problem tritt alle paar Tage wieder auf. Ich mache das gleiche wie oben und es löst und lässt mich entwickeln.
Zusätzlich zu der bereits vorgeschlagenen Ursache für das Fehlen einer Klassendatei kann dieser Fehler auch auf eine doppelte Klassendatei hinweisen. Eclipse meldet diesen Fehler, wenn eine Klassendatei im Erstellungspfad eine andere Klasse verwendet, die mehrere Definitionen im Erstellungspfad enthält.
Da Sie uns nur sehr wenige Details mitteilen, haben Sie höchstwahrscheinlich einen unglaublich einfachen Fehler gemacht, anstatt zu gehen
Build Path > Configure Build Path > Projects
und fügen Sie von dort aus Ihren zusätzlichen Projektordner hinzu, stattdessen gingen Sie zu
Build Path > Configure Build Path > Libraries
und fügte stattdessen Ihren Projektordner von dort hinzu.
Dies ist auf jeden Fall der Fall, wenn Ihr Code korrekt ist. Wenn Sie jedoch die Importe über die ctrl+space
Verknüpfung automatisch neu organisieren , verweisen Ihre Verweise anstelle Ihrer Importanweisungen, die auf com.your.additionalproject verweisen, alle auf bin.com.your.additionalproject.
Beachten Sie den Behälter. Dies bedeutet, dass Sie indirekt auf Ihre Klasse verweisen, indem Sie Ihre andere Projektordnerstruktur als Bibliothek behandeln, sodass Ihre IDE alle Aufgaben erledigt, um genau die Binärklasse zu finden, auf die Sie sich beziehen.
Um dies zu korrigieren, entfernen Sie den Ordner aus den Bibliotheken, fügen Sie ihn stattdessen auf der Registerkarte Projekte hinzu und organisieren Sie Ihre Importe neu. Ihr Projekt sollte gut funktionieren.
Wenn ich eine neue Eclipse-Version verwende und versuche, den vorherigen Arbeitsbereich zu verwenden, den ich mit der alten Eclipse-Version verwendet habe, ist dieser Fehler aufgetreten.
So löse ich das Problem:
Klicken Sie mit der rechten Maustaste auf mein Projekt im Paket-Explorer -> Eigenschaften -> Java-Erstellungspfad -> Bibliotheken -> Ich sehe einen Fehler (Cross Sign) in der JRE-Systembibliothek. Weil der Pfad nicht gefunden werden kann. -> Doppelklicken Sie auf die JRE-Systembibliothek -> Wählen Sie die Option "Workspace Default JRE" -> Finish -> OK. -> Penner, es funktioniert
Zu Ihrer Information.
In meinem Fall war es das Ergebnis des Hinzufügens einer neuen Abhängigkeit zu meiner pom.xml
Datei.
Die neue Abhängigkeit hing von einer alten Version einer Bibliothek ab (2.5). Dieselbe Bibliothek wurde von einer anderen Bibliothek in meiner benötigt pom.xml
, aber es war Version 3.0 erforderlich.
Wenn Maven auf diese Konflikte stößt, wird aus irgendeinem Grund einfach die neueste Version weggelassen. In Eclipse können Sie beim Anzeigen pom.xml
unten die Registerkarte "Abhängigkeitshierarchie" auswählen, um zu sehen, wie Abhängigkeiten aufgelöst werden. Hier finden Sie, ob die betreffende Bibliothek (und damit Klasse) aus diesem Grund weggelassen wurde.
In meinem Fall war es so einfach wie das Sperren der neueren Version. Sie können dies tun, indem Sie mit der rechten Maustaste auf den Eintrag klicken. Sie können ihn im Kontextmenü sperren.
Zeigen Sie mit der JRE im Erstellungspfad auf ein JDK. Das hat bei mir funktioniert.