it-swarm.com.de

Eclipse-Kompilierungsfehler: Die Hierarchie des Typs 'Klassenname' ist inkonsistent

Ich habe einige in Java geschriebene Open-Source-Software heruntergeladen und versucht, sie mit Eclipse zu kompilieren. __ Ich habe die Fehlermeldung erhalten: " Die Hierarchie des Typs 'Klassenname' ist inkonsistent " in einigen Dateien . Was verursacht diese Fehler und wie kann ich sie beheben?

127
user1099579

Dies bedeutet, dass Sie versuchen, eine nicht vorhandene Schnittstelle zu implementieren oder eine nicht vorhandene Klasse zu erweitern.

Versuchen Sie, Ihre Eclipse zu aktualisieren.

Wenn dies nicht funktioniert, kann dies bedeuten, dass Sie einen Verweis auf eine JAR-Datei haben, die sich nicht im Erstellungspfad befindet .. Überprüfen Sie den Klassenpfad Ihres Projekts und stellen Sie sicher, dass sich die JAR-Datei mit der Schnittstelle oder der Klasse darin befindet.

146
LaGrandMere

Manchmal passiert es, wenn Sie ein Glas hinzufügen, das Sie benötigen, aber nicht die Gläser, die die IT benötigt. In meinem Fall half das Hinzufügen aller Gläser in Tomcat/lib mir, dieses Problem zu lösen. Ich arbeite an einer Web-App.

13
Ibolit

Überprüfen Sie Ihre Fehler (Tab "Markierungen"). Ich hatte auch folgenden Fehler:

Archiv für benötigte Bibliothek im Projekt kann nicht gelesen werden ...

und als das behoben wurde, verschwand der "inkonsistente-Fehler".

Eigentlich hatte ich dem Build-Pfad Gläser hinzugefügt, aber aus irgendeinem Grund konnten sie nicht mit Fehlern gelesen werden

Das Archiv für die erforderliche Bibliothek im Projekt kann nicht gelesen werden oder ist keine gültige ZIP-Datei

Stattdessen fügte ich sie als "Externe Gläser" hinzu. Das hat geholfen und alle Kompilierungsprobleme waren nicht mehr!

11
Johan Valentin

Sie sollten das Projekt bereinigen oder Eclipse neu starten.

4
Thuy Nguyen

Dieses Problem hatte ich, nachdem ich das JDK auf eine neue Version aktualisiert hatte. Ich musste die Verweise auf Bibliotheken in Projekteigenschaften/Java Build Path aktualisieren.

4
jmst

Einen weiteren Fall hatte ich. Geben Sie den richtigen Projektpfad an und importieren Sie ihn in Eclipse.

Dann gehen Sie zu Projekt -> Bereinigen -> Alle Projekte bereinigen.

3

Das Problem kann sein, dass Sie falsche Gläser hinzugefügt haben. Ich hatte das gleiche Problem und der Grund war, dass ich eine falsche JRE-Standardbibliothek in den Erstellungspfad des Projekts aufgenommen hatte. Ich hatte Java mit einer anderen Version installiert und enthielt JRE-Dateien von Java mit einer anderen Version. (Ich hatte JRE 1.6 in meinem System installiert und hatte JRE-Bibliothek 1.7 aufgrund von zuvor installiertem Java im Buildpfad.) Möglicherweise können Sie überprüfen, ob die im Buildpfad enthaltene JRE-Bibliothek die korrekte Version hat. Java-Version, die Sie in Ihrem System installiert haben.

2
priti

Ich habe dieses Problem bei Eclipse Juno erlebt. Die Hauptursache war, dass einige Frühlingsgläser in vorübergehende Abhängigkeiten von Maven eingeschlossen wurden, jedoch in falschen Versionen.

Sie sollten also prüfen, ob Sie ein modularisiertes Framework als Quelle verwenden, dass jedes Modul (oder zumindest das wichtigste: Core, Beans, Kontext, AOP, TX usw.) in derselben Version enthalten ist.

Um das Problem zu lösen, habe ich Maven-Abhängigkeiten verwendet, um falsche Versionen von vorübergehenden Abhängigkeiten zu vermeiden.

2
Nicolas Barrera

Dieser Fehler wird angezeigt, wenn eine Klasse in Ihrer Bibliotheksdatei, die Sie im Klassenpfad haben, auf nicht vorhandene Klassen verweist, die sich in einer anderen JAR-Datei befinden könnten. Hier habe ich diese Fehlermeldung erhalten, als ich org.springframework.beans-3.1.2.RELEASE.jar nicht hinzugefügt hatte und eine Klasse von org.springframework.jdbc.core.support.JdbcDaoSupport erweitert hatte, die sich in org.springframework.jdbc-3.1.2.RELEASE.jar meines Klassenpfads befand.

2
James Jithin

In meinem Fall enthielten die Importreferenzen in vielen Klassen ein zusätzliches Word. Ich habe es gelöst, indem ich alle Dateien bearbeitet habe, um die korrekten Importe zu erhalten. Ich habe mit der Bearbeitung von Hand angefangen. Aber als ich das Muster sah, automatisierte ich es mit einem Fund in Eclipse. Dies hat den Fehler behoben.

1
CodeMed

Wenn die erweiterte Klasse das Problem hat, wird die obige Fehlermeldung angezeigt.

Beispiel 

class Example extends Example1 {

}

behebt die Probleme in Example1

1
user3195324

Fehler: Die Hierarchie des Typs "Klassenname" ist inkonsistent.

lösung: Klasse OtherDepJar {} -> ist in "other.dep.jar" .

klasse DepJar erweitert OtherDepJar {} -> ist in "dep.jar" .

klasse ProblematicClass erweitert DepJar {} -> befindet sich innerhalb des aktuellen Projekts.

Wenn sich dep.jar im Klassenpfad des Projekts befindet, während sich other.dep.jar nicht im Klassenpfad des Projekts befindet, zeigt Eclipse "Die Hierarchie des Typs ... ist inkonsistenter Fehler"

1
vijay m p

Es lag definitiv daran, dass Abhängigkeiten fehlten, die nicht in meinem Maven pom.xml waren.

Ich wollte zum Beispiel Integrationstests für die Implementierung der E-Commerce-Demo-Site von Broadleaf erstellen. 

Ich hatte ein Broadleaf-Glas mit Integrationstests von Broadleaf Commerce hinzugefügt, um deren Konfigurationsdateien und Basistestklassen wiederzuverwenden. Dieses Projekt hatte andere Testabhängigkeiten, die ich nicht aufgenommen hatte, und ich erhielt den Fehler "inkonsistente Hierarchie". 

Nach dem Kopieren der "Testabhängigkeiten" aus "broadleaf/pom.xml" und den zugehörigen Eigenschaftsvariablen, die die Versionen für jede Abhängigkeit in "broadleaf/pom.xml" bereitgestellt haben, ist der Fehler behoben.

Die Eigenschaften waren:

    <geb.version>0.9.3</geb.version>
    <spock.version>0.7-groovy-2.0</spock.version>
    <Selenium.version>2.42.2</Selenium.version>
    <groovy.version>2.1.8</groovy.version>

Die Abhängigkeiten waren:

<dependency>
            <groupId>org.broadleafcommerce</groupId>
            <artifactId>integration</artifactId>
            <type>jar</type>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.broadleafcommerce</groupId>
            <artifactId>broadleaf-framework</artifactId>
            <version>${blc.version}</version><!--$NO-MVN-MAN-VER$ -->
            <classifier>tests</classifier>
        </dependency>
        <dependency>
            <groupId>com.icegreen</groupId>
            <artifactId>greenmail</artifactId>
            <version>1.3</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>2.5.1</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymockclassextension</artifactId>
            <version>2.4</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.9</version>
            <type>jar</type>
            <classifier>jdk15</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>${groovy.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.gebish</groupId>
            <artifactId>geb-core</artifactId>
            <version>${geb.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.gebish</groupId>
            <artifactId>geb-spock</artifactId>
            <version>${geb.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <version>${spock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-support</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-firefox-driver</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-chrome-driver</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
  <!-- Logging -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>2.3.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
1
Bob

Für mich war das Problem auf falsche Importe zurückzuführen. In der Tat müssen Sie die Importe aktualisieren, nachdem Sie die v7-Support-Bibliothek hinzugefügt haben.

Es kann wie folgt behoben werden: für jede Klasse Ihres Projekts :

  1. Löschen Sie alle Zeilen mit import Android.[*] in jeder Klasse
  2. Reorganisieren Sie Ihre Importe: Wählen Sie im Kontextmenü Quelle/Importe organisieren oder (STRG + UMSCHALT + O)
  3. Wenn Sie dazu aufgefordert werden, wählen Sie die Bibliotheken Android.support.[*] (und nicht Android.[*]) aus.
1
Black Shell

Klicken Sie mit der rechten Maustaste auf den Projektordner und wählen Sie "Java Build Path". Unter "Java Build Path" sollten Sie Bibliotheken sehen können. Eclipse zeigt Fehler in einer dieser Bibliotheken an. Die Behebung dieses Problems hilft bei der Behebung des Problems.

0
MR AND

wenn Sie das Eclipse-Projekt importieren, genügt es, 1. Rufen Sie die Java-Erstellungspfadeinstellung unter den Projekteigenschaften auf. 2. Wenn an die JRE System Library ein Fehlerzeichen angehängt ist, doppelklicken Sie darauf, um das Fenster Library bearbeiten zu öffnen 3. Ändern Sie die Ausführungsumgebung auf die korrekte Java-Version des Systems, oder wählen Sie die anderen Einstellungen aus, indem Sie die entsprechenden Optionsfelder markieren. 4. Klicken Sie auf Fertig stellen 

0
mumbasa

Ich hatte genau dieselbe Problemmarke und löste sie, indem ich die Annotation @Override von einer Methode entfernte, die tatsächlich die erste Implementierung war (die "Super" -Methode ist eine abstrakte Methode) und keine Überschreibung.

0

Wenn Sie ein GWT-Projekt in Eclipse importieren, ohne "Google Plugin for Eclipse" zu installieren, tritt dies auf. Nach der Installation von "Google Plugin für Eclipse" wird dieser Fehler ausgeblendet.

0
Tom

Ich hatte eine Klasse, die LabelProvider in einem Projekt mit OSGi erweitert, da der Fehler aufgetreten ist. Die Lösung war: Hinzufügen von org.Eclipse.jface zu den erforderlichen Plugins in der manifest.mf-Datei, anstatt einzelne Pakete wie org.Eclipse.jface.viewers zu importieren

0
Harry Siebert

Ich hatte diesen Fehler, nachdem ich git merge aus einem Zweig gemacht hatte, in dem meine Klassen ein neues Interface erweitert hatten .. _. Es war genug, um Refresh (F5) den Dateibaum im Package Explorer Frame von Eclipse.

Es scheint, dass Eclipse nicht alles richtig aktualisiert hat und die Klassen eine nicht vorhandene Schnittstelle erweitert haben. Nach der Aktualisierung sind alle Fehler verschwunden.

0
nhaggen

Ich hatte auch dieses Problem ... Ich fand heraus, dass die Hierarchie der Klasse, die diese Ausnahme auslöste, von Eclipse nicht bis zu ihrer Wurzelklasse zurückverfolgt werden kann. Ich erkläre:

In meinem Fall habe ich 3 Java-Projekt: A, B und C ... wobei A und B Maven-Projekte und C ein reguläres Java-Eclipse-Projekt sind ...

Im Projekt A habe ich die Schnittstelle "interfaceA" ... Im Projekt B habe ich die Schnittstelle "interfaceB", die "interfaceA" erweitert. Im Projekt C habe ich die konkrete Klasse "classC" "das implementiert" interfaceB "

Das "Projekt C" enthielt das "Projekt B" in seinem Erstellungspfad, aber nicht "Projekt A" (das war also die Ursache des Fehlers). , alles ging wieder normal ...

0
Carlitos Way

Für mich wurde die Android-API-Ebene in eine mit Google-APIs geändert

0