Pobrałem oprogramowanie open source napisane w Javie i próbowałem skompilować je za pomocą Eclipse. Pojawił się błąd: „ Hierarchia typu„ Nazwa klasy ”jest niespójna ” w niektórych plikach. Co powoduje te błędy i jak je naprawić?
139
Maven
>Download Source
na danej zależności.Czasami zdarza się to, gdy dodajesz słoik, którego potrzebujesz, ale nie uwzględniaj słoików, których potrzebuje. W moim przypadku dodanie wszystkich słoików w tomcat / lib pomogło mi rozwiązać ten problem. Pracuję nad aplikacją internetową.
źródło
Sprawdź swoje błędy („znaczniki” na karcie). Miałem też następujący błąd:
a kiedy to zostało naprawione, „błąd niespójności” zniknął.
Właściwie dodałem słoiki do ścieżki kompilacji, ale z jakiegoś powodu nie można ich odczytać z błędem
Więc zamiast tego dodałem je jako „Zewnętrzne Jars”. To pomogło i nie było już wszystkich problemów z kompilacją!
źródło
Miałem ten problem po uaktualnieniu JDK do nowej wersji. Musiałem zaktualizować odniesienia do bibliotek w Project Properties / Java Build Path.
źródło
Miałem jeszcze jeden przypadek. Podaj poprawną ścieżkę projektu i zaimportuj ją do Eclipse.
Następnie przejdź do Projekt -> Wyczyść -> Wyczyść wszystkie projekty.
źródło
Należy wyczyścić projekt lub ponownie uruchomić Eclipse.
źródło
Zobaczysz ten błąd w przypadku, gdy jakaś klasa w pliku biblioteki, którą masz w ścieżce klas, zawiera odniesienie do nieistniejących klas, które mogą znajdować się w innym pliku jar. Tutaj otrzymałem ten błąd, gdy nie dodałem
org.springframework.beans-3.1.2.RELEASE.jar
i przedłużyłem klasę zorg.springframework.jdbc.core.support.JdbcDaoSupport
, która była worg.springframework.jdbc-3.1.2.RELEASE.jar
mojej ścieżce klas.źródło
Problem może polegać na tym, że dołączyłeś nieprawidłowe słoiki. Miałem ten sam problem, a powodem było to, że dołączyłem niepoprawną domyślną bibliotekę JRE do ścieżki budowania projektu. Zainstalowałem Javę z inną wersją i dołączałem pliki JRE Javy z inną wersją. (Zainstalowałem JRE 1.6 w swoim systemie i miałem bibliotekę JRE 1.7 w ścieżce kompilacji ze względu na wcześniej zainstalowaną Javę) Może możesz sprawdzić, czy biblioteka JRE, którą umieściłeś w ścieżce kompilacji, ma poprawną wersję, tj. wersji Java zainstalowanej w systemie.
źródło
Doświadczyłem tego problemu w Eclipse Juno, główną przyczyną było to, że chociaż niektóre wiosenne słoiki były dołączane przez przejściowe zależności maven, były one zawarte w nieprawidłowych wersjach.
Powinieneś więc sprawdzić, czy używasz modułowego frameworka jako sprężyny, czy każdy moduł (lub przynajmniej najważniejszy: rdzeń, fasola, kontekst, aop, tx itp.) Jest w tej samej wersji.
Aby rozwiązać problem, użyłem wykluczeń maven, aby uniknąć nieprawidłowej wersji przejściowych zależności.
źródło
Błąd: hierarchia typu „nazwa klasy” jest niespójnym błędem.
rozwiązanie: klasa OtherDepJar {} -> znajduje się wewnątrz "other.dep.jar" .
klasa DepJar rozszerza OtherDepJar {} -> znajduje się wewnątrz "dep.jar" .
klasa ProblematicClass rozszerza DepJar {} -> znajduje się wewnątrz bieżącego projektu.
Jeśli dep.jar znajduje się w ścieżce klas projektu, ale other.dep.jar nie znajduje się w ścieżce klas projektu, Eclipse wyświetli komunikat „Hierarchia typu ... jest niespójna”
źródło
Według mnie problem wynikał z niewłaściwego importu. W rzeczywistości należy zaktualizować import po dodaniu biblioteki obsługi v7.
Można to naprawić, wykonując następujące czynności dla każdej klasy projektu :
import android.[*]
, w każdej klasieandroid.support.[*]
(a nieandroid.[*]
).źródło
Z pewnością wynikało to z braku zależności, których nie było w moim maven pom.xml.
Na przykład chciałem stworzyć testy integracyjne dla mojej implementacji strony demonstracyjnej e-commerce typu broadleaf.
Dołączyłem słoik z szerokimi liśćmi z testami integracji z handlu liściastego, aby ponownie wykorzystać ich pliki konfiguracyjne i podstawowe klasy testowe. Ten projekt miał inne zależności testowe, których nie uwzględniłem i otrzymałem błąd „niespójna hierarchia”.
Po skopiowaniu „zależności testowych” z broadleaf / pom.xml i powiązanych zmiennych właściwości, które dostarczyły wersje dla każdej zależności w broadleaf / pom.xml, błąd zniknął.
Właściwości były:
Zależności były następujące:
źródło
Jeśli problem dotyczy klasy rozszerzonej, zostanie wyświetlony powyższy komunikat o błędzie.
Przykład
napraw problemy w
Example1
źródło
Miałem dokładnie ten sam znacznik problemu i rozwiązałem go, usuwając adnotację @Override z metody, która w rzeczywistości była pierwszą implementacją (ta „super” jest metodą abstrakcyjną), a nie nadpisaniem.
źródło
W moim przypadku odniesienia importu w wielu klasach zawierały dodatkowe słowo. Rozwiązałem to, edytując wszystkie pliki, aby mieć poprawny import. Zacząłem wprowadzać zmiany ręcznie. Ale kiedy zobaczyłem wzór, zautomatyzowałem go, znajdując… zastąp w zaćmieniu. To rozwiązało błąd.
źródło
Dla mnie była to zmiana poziomu Android API na jeden z Google API
źródło
Ja też miałem ten problem ... Dowiedziałem się, że hierarchii klasy, która rzucała ten wyjątek, nie można prześledzić aż do jej klasy głównej przez zaćmienie ... Wyjaśnij:
W moim przypadku mam 3 projekty java: A, B i C ... gdzie A i B to projekty maven, a C to zwykły projekt zaćmienia java ...
W projekcie A mam interfejs „interfaceA” ... W projekcie B mam interfejs „interfaceB” rozszerzający „interfaceA” W projekcie C mam konkretną klasę „classC”, która implementuje „interfaceB”
„Projekt C” zawierał „projekt B” w swojej ścieżce budowania, ale nie „projekt A” (więc to była przyczyna błędu) .... Po dołączeniu „projektu A” do ścieżki kompilacji „C” wszystko wróciło do normy ...
źródło
Miałem klasę, która rozszerza LabelProvider w projekcie z OSGi, tam wystąpił błąd. Rozwiązaniem było: dodanie org.eclipse.jface do wymaganych wtyczek w pliku manifest.mf zamiast importowania pojedynczych pakietów, takich jak org.eclipse.jface.viewers
źródło
jeśli importujesz projekt eclipse tylko 1. Przejdź do ustawienia ścieżki budowania java we właściwościach projektu. 2. W przypadku, gdy biblioteka systemu JRE ma dołączony znak błędu, kliknij go dwukrotnie, aby otworzyć okno Edytuj bibliotekę 3. Zmień środowisko wykonawcze na poprawną wersję systemu Java lub wybierz edytuj inne ustawienia, zaznaczając przyciski opcji przypisz do nich. 4. Kliknij Zakończ
źródło
Nastąpi to podczas importowania projektu GWT w Eclipse bez instalowania „Google Plugin for Eclipse”. Po zainstalowaniu „Google Plugin for Eclipse” ten błąd zniknie.
źródło
Kliknij prawym przyciskiem myszy folder projektu i wybierz „Ścieżka budowania Java”. W sekcji „Ścieżka budowania Java” powinno być możliwe wyświetlenie bibliotek. Eclipse pokaże błędy w każdej z tych bibliotek. Naprawienie tego problemu pomoże rozwiązać problem.
źródło
Wystąpił ten błąd po wykonaniu niektórych git merge z gałęzi, w której moje klasy rozszerzyły nowy interfejs. Wystarczyło odświeżyć (F5) drzewo plików w ramce Eksploratora pakietów w Eclipse.
Wygląda na to, że Eclipse nie zaktualizował wszystkiego poprawnie, więc klasy rozszerzały nieistniejący jeszcze interfejs. Po odświeżeniu wszystkie błędy zniknęły.
źródło
Musiałem przejść z Eclipse Oxygen, które dostałem od IBM i użyłem IBM JDK 8 na Eclipse Photon i Oracle JDK 8. Pracuję nad dostosowaniami Java dla maximo.
źródło