Je développe une application Spring/Vaadin/Hibernate.
Tout fonctionne mais j'ai toujours les marqueurs d'erreur suivants dans Eclipse STS 2.8.1:
The hierarchy of the type BankView is inconsistent
The hierarchy of the type AbstractEntityView is inconsistent
J'ai la structure suivante pour mes vues:
public class BankView extends AbstractEntityView {
@Resource private BankService bankService;
public void buildLayout() {
super.buildLayout();
// Use of the service here
}
}
public abstract class AbstractEntityView extends AbstractView {
public void buildLayout() {
verticalLayout = new VerticalLayout();
verticalLayout.setSpacing(true);
verticalLayout.setSizeFull();
setContent(verticalLayout);
super.buildLayout();
}
}
@Configurable(preConstruction = true)
public abstract class AbstractView extends com.vaadin.ui.VerticalLayout {
public AbstractView() {
super();
try {
buildLayout();
}
catch (AccessDeniedException e) { // Spring Security
System.out.println("GTFO !");
}
}
}
Quelle est la cause de ces marqueurs d'erreur?
En fait, le problème était dû au fait que j'avais rendu AbstractListView @Configurable. Lorsque j'ai mis cette annotation sur la classe finale (par exemple BankView), toutes les erreurs ont disparu.
Merci à tous pour l'aide. Si quelqu'un a la même erreur, il trouvera une solution dans les différentes réponses.
Dans mon cas, j'ai trouvé le The hierarchy of the type ... is inconsistent
erreur dans Eclipse causée par une classe de fichier jar à partir de laquelle j'étendais ma classe en référençant une classe qui n'était pas dans le chemin de génération.
Donc si vous avez:
// in other.dep.jar
class FromOtherDepJar {}
// in dep.jar
class FromDepJar extends FromOtherDepJar {}
// in the current project
class ProblematicClass extends FromDepJar {}
Si dep.jar
se trouve dans le chemin d'accès aux classes du projet, mais other.dep.jar
ne l'est pas, Eclipse affichera le The hierarchy of the type ... is inconsistent
Erreur.
Jetez un œil à la vue Problèmes dans Eclipse, la colonne Description est plus détaillée sur le problème réel que le survol.
Avez-vous essayé de fermer et d'ouvrir l'éclipse? Parfois ça aide. Mon Eclipse (probablement parce que je suis sur une plate-forme Windows) affiche souvent des erreurs comme ça, la seule solution est de quitter Eclipse et de rouvrir plus tard.
Une autre cause est une référence à une superclasse ou une superinterface qui existe, mais qui se trouve dans un package différent et qui n'est ni importée ni pleinement qualifiée.
Cela m'est venu à l'esprit après avoir utilisé le refactoring Eclipse pour déplacer des classes abstraites héritées d'une interface imbriquée. Après le déplacement, toutes les sous-classes avaient le message "la hiérarchie du type X est incohérente". Le problème a été résolu en important à la main les classes abstraites qui avaient été déplacées.
Mon problème était que les classes/jars étaient recompilés manuellement en dehors d'Eclipse en utilisant des tâches ant et gradle. L'actualisation de tous les projets et la reconstruction dans Eclipse ont fait disparaître les erreurs.
Reconfigurez le chemin de génération pour résoudre le problème.
J'ai résolu cette erreur La hiérarchie du type ServiceController est incohérente problème en suppression tous Referenced Libraries
de pots dans Build Path
et ajoutez à nouveau tous les fichiers JAR dans l'IDE Eclipse.
C'est une possibilité que vos dépendances maven ne soient pas reconnues. Vérifiez si Maven est activé pour ce projet particulier. Dans Eclipse, Maven peut être activé en cliquant avec le bouton droit sur le projet et en choisissant Maven -> Activer les dépendances Maven.
Dans mon cas, j'utilisais la mauvaise version de JRE.
Je sais que ce n'est probablement pas le cas ici, mais juste pour les informations supplémentaires, cette erreur peut être provoquée lors de l'utilisation d'une hiérarchie d'interfaces et il y a une erreur (comme des génériques incorrects) quelque part plus haut dans votre hiérarchie
Allez vérifier votre chemin de génération (Propriétés du projet => Java Chemin de génération => Bibliothèques) et la boîte de dialogue peut vous montrer qu'il manque quelque chose. C'était mon problème, où le projet fonctionnait mais puis après un mois ou deux, il a cessé de fonctionner car ma configuration JRE a changé.
J'ai résolu ce problème en ajoutant javax.servlet-api-3.0.1.jar. mon outil de développement est Eclipse, mais mon projet a été développé sous la myeclipse, puis lorsque j'importe le projet dans Eclipse, il lance "la hiérarchie du type SysUserFilter est incohérente", donc je pense que myeclipse fournit automatiquement javax.servlet-api-3.0 .1.jar, mais pas Eclipse. Il doit donc être importé manuellement.
Cette erreur apparaît également en cas de non-concordance de la bibliothèque de prise en charge d'Android, c'est-à-dire lorsque deux bibliothèques externes que vous utilisez ont deux versions de la bibliothèque de prise en charge, cette erreur s'affiche (ce que j'ai fait, c'est que je leur ai fait les deux mêmes versions en supprimant une et en copiant la prise en charge d'une autre bibliothèque tierce à celle-ci)
J'ai eu ce problème lorsque j'ai ajouté actionbarsherlock à mon Android et j'ai oublié de supprimer la bibliothèque de support de mon projet d'origine. La solution consiste à supprimer Android-support-v4.jar de votre projet et à nettoyer le projet .. il devrait charger la bibliothèque du dossier actionbarsherlock.