J'ai téléchargé des logiciels open source écrits en Java et essayé de les compiler en utilisant Eclipse. J'ai eu l'erreur: " La hiérarchie du type 'Nom de classe' est incohérente " dans certains fichiers. Quelles sont les causes de ces erreurs et comment les corriger?
139
Maven
>Download Source
sur la dépendance en question.Parfois, cela se produit lorsque vous ajoutez un fichier dont VOUS avez besoin, mais n'incluez pas les fichiers dont le service informatique a besoin. Dans mon cas, l'ajout de tous les jars dans tomcat / lib m'a aidé à résoudre ce problème. Je travaille sur une application Web.
la source
Vérifiez vos erreurs (onglet "marqueurs"). J'ai également eu l'erreur suivante:
et quand cela a été corrigé, l '"erreur incohérente" a disparu.
En fait, j'avais ajouté des fichiers JAR au chemin de construction, mais pour une raison quelconque, ils ne pouvaient pas être lus avec une erreur
Donc, à la place, je les ai ajoutés en tant que «pots externes». Cela a aidé et tous les problèmes de compilation n'étaient plus!
la source
J'ai eu ce problème après avoir mis à niveau le JDK vers une nouvelle version. J'ai dû mettre à jour les références aux bibliothèques dans Propriétés du projet / Chemin de construction Java.
la source
Un autre cas que j'ai eu. Donnez le chemin du projet correct et importez-le dans eclipse.
Ensuite, allez dans Projet -> Nettoyer -> Nettoyer tous les projets.
la source
Vous devez nettoyer le projet ou redémarrer Eclipse.
la source
Vous verrez cette erreur au cas où une classe de votre fichier de bibliothèque que vous avez dans classpath fait référence à une ou plusieurs classes non existantes qui pourraient être dans un autre fichier jar. Ici, j'ai reçu cette erreur lorsque je n'ai pas ajouté
org.springframework.beans-3.1.2.RELEASE.jar
et j'ai étendu une classe à partir deorg.springframework.jdbc.core.support.JdbcDaoSupport
, qui était dansorg.springframework.jdbc-3.1.2.RELEASE.jar
mon classpath.la source
Le problème peut être que vous avez inclus des fichiers jar incorrects. J'ai eu le même problème et la raison était que j'avais inclus une bibliothèque JRE par défaut incorrecte dans le chemin de construction du projet. J'avais installé Java avec une autre version et incluais des fichiers JRE de Java avec une version différente. (J'avais installé JRE 1.6 dans mon système et j'avais la bibliothèque JRE 1.7 incluse dans le chemin de construction en raison de Java précédemment installé) Vous pouvez peut-être vérifier si la bibliothèque JRE que vous avez incluse dans le chemin de construction est de version correcte, c'est-à-dire. de la version Java que vous avez installée sur votre système.
la source
J'ai rencontré ce problème sur Eclipse Juno, la cause principale était que, bien que certains pots de printemps aient été inclus par des dépendances maven transitoires, ils étaient inclus dans des versions incorrectes.
Vous devriez donc vérifier si vous utilisez un framework modulaire comme spring que tous les modules (ou du moins les plus importants: core, beans, context, aop, tx, etc.) sont dans la même version.
Pour résoudre le problème, j'ai utilisé des exclusions de dépendances maven pour éviter une version incorrecte des dépendances transitoires.
la source
Erreur: la hiérarchie du type "nom de classe" est une erreur incohérente.
solution: la classe OtherDepJar {} -> est dans "other.dep.jar" .
La classe DepJar étend OtherDepJar {} -> est à l'intérieur de "dep.jar" .
class ProblematicClass étend DepJar {} -> est à l'intérieur du projet en cours.
Si dep.jar est dans le chemin de classe du projet, mais que other.dep.jar n'est pas dans le chemin de classe du projet, Eclipse affichera le message "La hiérarchie du type ... est une erreur incohérente"
la source
Pour moi, le problème était dû à de mauvaises importations. En fait, il faut mettre à jour les importations après avoir ajouté la bibliothèque de support v7.
Il peut être corrigé en procédant comme suit, pour chaque classe de votre projet :
import android.[*]
, dans chaque classeandroid.support.[*]
(et nonandroid.[*]
).la source
C'était certainement parce qu'il manquait des dépendances qui n'étaient pas dans mon maven pom.xml.
Par exemple, je voulais créer des tests d'intégration pour mon implémentation du site de démonstration de commerce électronique à larges feuilles.
J'avais inclus un pot à feuilles larges avec des tests d'intégration du commerce à feuilles larges afin de réutiliser leurs fichiers de configuration et leurs classes de test de base. Ce projet avait d'autres dépendances de test que je n'avais pas incluses et j'ai reçu l'erreur «hiérarchie incohérente».
Après avoir copié les "dépendances de test" de broadleaf / pom.xml et les variables de propriétés associées qui fournissaient les versions pour chaque dépendance dans broadleaf / pom.xml, l'erreur a disparu.
Les propriétés étaient:
Les dépendances étaient:
la source
Si la classe étendue rencontre le problème, le message d'erreur ci-dessus s'affiche.
Exemple
résoudre les problèmes dans
Example1
la source
J'ai eu exactement le même marqueur de problème et je l'ai résolu en supprimant l'annotation @Override d'une méthode qui était en fait la première implémentation (la "super" étant une méthode abstraite) et non une substitution.
la source
Dans mon cas, les références d'importation dans de nombreuses classes contenaient un mot supplémentaire. Je l'ai résolu en éditant tous les fichiers pour avoir les importations correctes. J'ai commencé à faire les modifications manuellement. Mais quand j'ai vu le motif, je l'ai automatisé avec une trouvaille .. remplacer dans l'éclipse. Cela a résolu l'erreur.
la source
Pour moi, cela changeait le niveau d'API Android en un niveau avec les API Google
la source
J'avais aussi ce problème ... J'ai découvert que la hiérarchie de la classe qui lançait cette exception ne peut pas être retracée jusqu'à sa classe racine par eclipse ... J'explique:
Dans mon cas, j'ai 3 projets java: A, B et C ... où A et B sont des projets maven et C un projet java eclipse régulier ...
Dans le projet A, j'ai l'interface "interfaceA" ... Dans le projet B, j'ai l'interface "interfaceB" qui étend "interfaceA" Dans le projet C, j'ai la classe concrète "classC" qui implémente "interfaceB"
Le "projet C" incluait le "projet B" dans son chemin de construction mais pas le "projet A" (donc c'était la cause de l'erreur) .... Après avoir inclus le "projet A" dans le chemin de construction de "C" , tout est revenu à la normale ...
la source
J'avais une classe qui étend LabelProvider dans un projet avec OSGi, là l'erreur s'est produite. La solution était la suivante: Ajouter org.eclipse.jface aux plugins requis dans le manifest.mf au lieu d'importer les packages uniques comme org.eclipse.jface.viewers
la source
si vous importez simplement le projet eclipse 1. Accédez au paramètre de chemin de construction java sous les propriétés du projet. 2. Dans le cas où la bibliothèque système JRE a un signe d'erreur attaché, double-cliquez dessus pour ouvrir la fenêtre Modifier la bibliothèque 3. Modifiez l'environnement d'exécution pour la version Java correcte du système ou choisissez modifier les autres paramètres en cochant les boutons radio attribuer pour eux. 4. Cliquez sur Terminer
la source
Lors de l'importation d'un projet GWT dans Eclipse sans installer "Google Plugin for Eclipse", cela se produit. Après avoir installé "Google Plugin for Eclipse", cette erreur disparaîtra.
la source
Cliquez avec le bouton droit sur le dossier du projet et sélectionnez "Java Build Path". Sous "Java Build Path", vous devriez pouvoir voir les bibliothèques. Eclipse affichera des erreurs dans l'une de ces bibliothèques. La résolution de ces problèmes aidera à résoudre le problème.
la source
J'ai eu cette erreur après avoir fait une fusion git à partir d'une branche où mes classes ont étendu une nouvelle interface. Il suffisait de rafraîchir (F5) l'arborescence des fichiers dans le cadre de l' explorateur de paquets d'Eclipse.
Il semble qu'Eclipse n'ait pas tout mis à jour correctement et que les classes étendaient donc une interface qui n'existait pas encore. Après actualisation, toutes les erreurs ont disparu.
la source
J'ai dû passer d'Eclipse Oxygen que j'ai obtenu d'IBM et utilisé IBM JDK 8 vers Eclipse Photon et Oracle JDK 8. Je travaille sur des personnalisations Java pour maximo.
la source