2012-03-09 12 views
34

Sto sviluppando un'applicazione Spring/Vaadin/Hibernate.Eclipse La gerarchia del tipo ... è incoerente con l'annotazione @Configurable

Tutto funziona ma ho ancora i seguenti marcatori di errore in Eclipse 2.8.1 STS:

The hierarchy of the type BankView is inconsistent 
The hierarchy of the type AbstractEntityView is inconsistent 

Ho la seguente struttura per le mie opinioni:

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 !"); 
     } 
    } 
} 

ciò che sta causando questi marcatori di errore ?

+2

Questo messaggio di errore è generalmente dovuto a un percorso di classe errato. Prova a ricostruire l'intero progetto, che di solito dà un errore più utile, – skaffman

+0

Innanzitutto, grazie per la risposta;) Ho già provato a crearlo, non è cambiato nulla. Ho provato Progetto> Pulisci ... non ha funzionato. Nel mio classpath, ho provato a cambiare l'ordine delle librerie, nulla è cambiato:/ – c4k

+0

possibile duplicato di [Errore di compilazione di Eclipse: la gerarchia del tipo 'Nome di classe' è incoerente] (http://stackoverflow.com/questions/ 8520090/eclipse-compilation-error-the-hierarchy-of-the-type-type-name-is-inconsisten) –

risposta

1

In effetti il ​​problema era perché ho reso AbstractListView @Configurable. Quando ho inserito questa annotazione nella classe finale (ad esempio BankView), tutti gli errori sono scomparsi.

Grazie a tutti per l'aiuto. Se qualcuno ha lo stesso errore, troverà una soluzione nelle diverse risposte.

49

Nel mio caso, ho trovato l'errore The hierarchy of the type ... is inconsistent in Eclipse causato da una classe di file jar da cui stavo estendendo la mia classe facendo riferimento a una classe che non era nel percorso di generazione.

Quindi, se si dispone di:

// in other.dep.jar 
class FromOtherDepJar {} 

// in dep.jar 
class FromDepJar extends FromOtherDepJar {} 

// in the current project 
class ProblematicClass extends FromDepJar {} 

Se dep.jar è nel classpath del progetto, ma non è other.dep.jar, Eclipse mostrerà l'errore The hierarchy of the type ... is inconsistent.

Dai un'occhiata alla vista Problemi in Eclipse, la colonna Descrizione è più dettagliata su quale sia il vero problema rispetto al passaggio del mouse.

+0

Stavo diventando "La gerarchia del tipo GreetTheWorldFixture è incoerente" mentre provo il tutorial fitnesse, risulta che ero manca il fitnesse.jar nei miei progetti classpath, grazie per la risposta! –

+0

Il collegamento non funziona –

+1

@ Link GáborLipták rimosso, IIRC ha dichiarato la stessa causa per il problema – Alex

0

La loro è una possibilità che le dipendenze del tuo maven non sono riconosciute. Vedi se hai Maven abilitato per questo particolare progetto. In Eclipse Maven può essere attivato facendo clic con il tasto destro sul progetto e scegliendo Maven -> Abilita dipendenze di Maven.

1

Riconfigurare il percorso di compilazione per risolvere il problema.

0

Nel mio caso stavo usando la versione JRE sbagliata.

1

Hai provato a chiudere e aprire eclissi? A volte aiuta. La mia eclissi (probabilmente perché sono su una piattaforma Windows) mostra spesso errori del genere, l'unica soluzione è uscire da eclissi e riaprire più tardi.

0

Ho avuto questo problema quando ho aggiunto actionbarsherlock al mio progetto Android e ho dimenticato di rimuovere la libreria di supporto dal mio progetto originale. La soluzione è rimuovere android-support-v4.jar dal progetto e pulire il progetto .. dovrebbe caricare la libreria dalla cartella actionbarsherlock.

1

Un'altra causa è un riferimento a una superclasse o superinterfaccia esistente, ma in un pacchetto diverso e non è né importata né pienamente qualificata.

Mi è venuto in mente dopo aver utilizzato il refactoring di Eclipse per spostare classi astratte ereditate da un'interfaccia nidificata. Dopo lo spostamento, tutte le sottoclassi avevano il messaggio "gerarchia del tipo X è incoerente". Il problema è stato risolto importando a mano nelle classi astratte che erano state spostate.

0

So che questo probabilmente non è il caso qui, ma solo per le informazioni aggiuntive questo errore può essere causato quando si utilizza una gerarchia di interfacce e c'è qualche errore (ad esempio i generici sbagliate) da qualche parte più alta nella gerarchia

0

Questo errore si verifica anche quando si verifica una mancata corrispondenza della libreria di supporto Android, vale a dire quando due librerie esterne che usi hanno due versioni della libreria di supporto che questo errore mostra, (quello che ho fatto è stato renderle entrambe le stesse eliminandone una e copiando il supporto da altra libreria di terze parti a questa)

0

L'errore indica che manca qualsiasi JAR di riferimento.

Nel mio caso ho ricevuto questo errore durante la creazione di un progetto Spring MVC. Ho perso l'aggiunta di file JAR correlati (spring-context-4.1.0.RELEASE.jar & spring-web-4.1.0.RELEASE.jar) nel percorso di generazione.

Sebbene siano stati aggiunti altri Spring JARs (Core, Beans, AOP & MVC) ma sono stati richiesti anche file JAR sopra menzionati. Una volta aggiunti altri JAR, l'errore è scomparso.

1

Il mio problema era che le classi/i vasi venivano ricompilati manualmente al di fuori di Eclipse usando le attività di ant e gradle. L'aggiornamento di tutti i progetti e la ricostruzione in Eclipse hanno fatto scomparire gli errori.

0

Ho risolto questo errore La gerarchia di tipo ServiceController è coerente problema rimuovendo tutti Referenced Libraries di barattoli in Build Path e ri aggiungere tutti barattoli in IDE eclisse.

0

Ho risolto questo problema aggiungendo javax.servlet-api-3.0.1.jar. il mio strumento di sviluppo è Eclipse, ma il mio progetto è stato sviluppato sotto myeclipse, quindi quando ho importato il progetto in eclissi, getta "la gerarchia del tipo SysUserFilter è incoerente", quindi penso che myeclipse fornisca automaticamente javax.servlet-api-3.0 .1.jar, ma eclipse not.so ha bisogno di importare manualmente.

0

Andare e verificare effettivamente il percorso di generazione (Proprietà progetto => Percorso build Java => Librerie) e la finestra di dialogo potrebbe mostrare che manca qualcosa. Questo era il mio problema, in cui il progetto stava funzionando, ma poi dopo un mese o due ha smesso di funzionare perché il mio setup JRE è cambiato.

Problemi correlati