35 votes

Eclipse La hiérarchie du type ... est incohé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?

50voto

Alex Points 3448

Dans mon cas, j'ai trouvé l' The hierarchy of the type ... is inconsistent d'erreur dans Eclipse causé par un fichier jar classe à partir de laquelle j'ai été l'extension de ma classe de la référence d'une classe qui n'était pas dans le build path.

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 est dans le classpath du projet, mais other.dep.jar n'est pas, Eclipse va montrer l' The hierarchy of the type ... is inconsistent d'erreur.

Jetez un oeil à la Vue des Problèmes dans Eclipse, la Description de la colonne est plus prolixe au sujet de ce que le problème réel est que le hover-dessus.

1voto

rotterick Points 76

Avez-vous essayé de fermer et d'ouvrir Eclipse? Parfois ça aide. Mon éclipse (probablement parce que je suis sur une plate-forme Windows) affiche souvent des erreurs de ce type, la seule solution étant de quitter eclipse et de rouvrir plus tard.

1voto

Kanwaljit Singh Points 11

Reconfigurez le chemin de construction pour résoudre le problème.

1voto

Chafik Points 659

En fait, le problème était dû au fait que j'ai rendu AbstractListView @Configurable. Lorsque je mets cette annotation sur la classe finale (par exemple, BankView), toutes les erreurs disparaissent.

Merci à tous pour l'aide. Si quelqu'un a la même erreur, il trouvera une solution dans les différentes réponses.

1voto

Andy Thomas Points 30979

Une autre cause est une référence à une super-classe ou une super-interface existante, mais se trouvant dans un package différent, et qui n'est ni importée ni pleinement qualifiée.

Cela m'est arrivé 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 de type X est incohérent". Le problème a été résolu en important manuellement dans les classes abstraites déplacées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X