web-dev-qa-db-fra.com

Eclipse La hiérarchie du type ... n'est pas cohérente avec l'annotation @Configurable

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?

35
c4k

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.

1
c4k

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.

50
Alex

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.

1
rotterick

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.

1
Andy Thomas

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.

1
jp093121

Reconfigurez le chemin de génération pour résoudre le problème.

1
Kanwaljit Singh

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.

0
pudaykiran

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.

0
Th 00 mÄ s

Dans mon cas, j'utilisais la mauvaise version de JRE.

0
Sridhar Sarnobat

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

0
stikku

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é.

0
Andrew

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.

0
ZhaoJing

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)

0
George Thomas

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.

0
vanomart