2012-08-29 12 views
5

ho una classe che implementa una classe astratta. La classe astratta è in un altro pacchetto del mio progetto. Aggiunto il pacchetto in cui la classe è astratta da Configura percorso di costruzione/Progetto. In classe che implementa sta accusando il seguente errore: La gerarchia della classe tipo è incoerenteLa gerarchia di tipo Classe è incoerente

Avere I per aggiungere questo pacchetto da qualche altra parte?

Grazie!

+6

mostrare un po 'di codice o qualcosa del genere. La tua spiegazione è in qualche modo meno coerente. – Erik

risposta

4

Questo significa che hai fatto un cambiamento incompatibili in una classe super, ma non è stato ricompilato esso.

vi suggerisco di utilizzare un sistema di compilazione, come Maven o Ant e/o utilizzare un IDE per costruire tutto il codice.

+0

Ho scaricato la versione SVN e il progetto sta già utilizzando Ant, dovrò configurare qualcosa per la classe è visibile? – Deb

+1

È necessario assicurarsi che tutto sia ricompilato. Mi aspetterei che quando proverai a farlo vedrai un errore di compilazione che spiegherà il tuo problema. –

+0

Non dare la colpa a niente. Accusa solo il codice stesso: "La gerarchia del tipo BDIGenericGeneratorEvent è incoerente" – Deb

29

Questi errori accaduti perché alcuni di interfaccia/classe nella gerarchia non può essere risolto. Per esempio: l'errore è nella tua classe - classe X, X eredita Y, e, a sua volta, Y eredita Z. Tuttavia, il compilatore non può risolvere z (in errore precedente), a causa z è appartiene a una libreria che non è incluso . Pertanto, è necessario aggiungere il pacchetto contenente z a Java Build Path classpath/o del progetto (se si utilizza Eclipse). spero che possa essere d'aiuto.

+2

+1 per questa risposta, grazie. Ho appena avuto questo errore e vorrei aggiungere: Questo può accadere anche se la classe Z è la tua classe, ma ha un errore di sintassi. Quindi la classe Z non può essere compilata. Nella mia classe caso Z non poteva essere compilato perché ha utilizzato un metodo Java 7, ma declassato l'ambiente Java 6. –

1

Ciò significa classe che implementata da voi ha riferimento all'interfaccia o di classe che fa riferimento ancora una volta alcune altre classi o interfacce in altre biblioteche e quelli che non sono disponibili.

0
right click your project ,Properties- java build path- source- include all the cs file source(it may inherit the files) and sync. 

questo ha funzionato per me e correttamente.

+0

Questo consiglio dipende dalla IDE utilizzato. @Deb potrebbe non utilizzare lo stesso che sei. – zck

+0

sì, anche questo è corect. –

1

vaso springframework.aop è dipende aopalliance.jar aggiungerlo al vostro percorso di classe si risolverà ur problm sperare funziona cos stavo affrontando stesso prob ho aggiunto vaso dipende quindi risolto

0

Ho anche avuto questo problema quando ho provato ad usare qualche classe da un progetto plugin in un altro. Ho avuto qualcosa come myClass estende pp1Class - qui ho avuto l'errore, pp1Class plugin è stato aggiunto come una dipendenza. pp1Class estende pp2Class - che era una dipendenza in pp1 (plugin proj1) ma non nel mio plugin. Quello che ho fatto è stato andare in pp1 e dove hai definito la dipendenza in pp2, fare clic sulle proprietà e controllare "Reexport questa dipendenza" (questo è nel MANIFEST.MF). Questo dovrebbe risolvere il problema, ha risolto il mio.

0

Un altro motivo di questo errore è che una delle classi base implementa un'interfaccia che si trova in una libreria esterna e il file .classpath è conservato su un sistema di controllo del codice sorgente (quindi in sola lettura).

Per esempio, il ClassB estende ClassA e ClasseA implementa InterfaceA che è in LibraryA.jar. ClassA è in ProjectA, ClassB è in ProjectB. Il file ProjectA .classpath è di sola lettura.

qui è necessario esportare il LibraryA.jar dal ProjectA. Ma credo che a causa di un bug di Eclipse, quando un nuovo compagno di squadra collega questi progetti (o occasionalmente quando prepari un altro spazio di lavoro), ottiene questo errore di gerarchia di tipo. L'unico modo per risolvere questo problema è il check-out del file .classpath in ProjectA, rimuovere e riaggiungere una libreria (non è necessario essere LibraryA.jar). Questa operazione in qualche modo risolve l'errore.

4

Vai al progetto Explorer.

  1. Fare clic destro sul vostro progetto
  2. costruire il percorso
  3. Configure Build Path
  4. Rimuovere JRE Sistema Bibliotecario
  5. Fare clic su Aggiungi Biblioteca
  6. Aggiungere JRE Sistema Bibliotecario
  7. Fare clic su Avanti e quindi Finisci

Gli errori verranno risolti.

+0

Questo funziona per me, ma non ho rimosso e aggiungi il 'JRE Sistema Bibliotecario', perché, nel mio caso, il problema era in altra libreria JAR. Ho creato il progetto con 'maven-eclipse-plugin' (2.10) e rimuovere e aggiungere la libreria sospetta funziona davvero in eclissi Luna. –

0

Nell'ambiente Eclipse, OSGi, il pacchetto richiesto può essere aggiunto alla scheda MANIFEST.MF-> Dipendenze -> Pacchetti importati. Questo risolverà il problema. Oppure il plugin che contiene la classe può essere aggiunto ai plugin richiesti

1

Mi trovavo di fronte a questo problema in una delle mie applicazioni RCP.

Causa: non è stato aggiunto il plug-in principale org.eclipse.core.runtime nella sezione dependance del file manifest. Quando ho aggiunto questo problema del barattolo delle dipendenze è stato risolto.

Grazie, Sid

Problemi correlati