2010-01-25 11 views
10

Eventuali duplicati:
Why does Eclipse complain about @Override on interface methods?È possibile richiamare Java 5 per ignorare gli errori @Override?

ho qualche codice Java che è stato scritto utilizzando Eclipse e Java 6 SDK, quindi i metodi che implementano un'interfaccia sono annotati con @Override - un'annotazione che è legale in Java 6, ma non in Java 5.

Mi piacerebbe compilare lo stesso codice utilizzando l'SDK Java 5 (javac su Mac OS X 10.5). Tutto viene compilato e funziona bene tranne per le annotazioni @Override. C'è un modo per far sì che javac ignori le annotazioni @Override per questo progetto, o è l'unica soluzione per rimuoverli tutti?

risposta

4

quanto pare è possibile effettuare l'aggiornamento a Java 1.5 U21 e questo risolverà il problema:

Why is javac failing on @Override annotation

+0

Ho letto questa domanda e tutte le sue risposte, e non è confermata per JDK 1.5u21 e 1.5u22, vedi http://stackoverflow.com/questions/2335655/why-is-javac-failing-on-override-annotation # comment3379487_2335752 –

6

Sfortunatamente, l'unico modo è di rimuovere effettivamente le annotazioni.

Se si desidera che il codice venga compilato ed eseguito con Java 5, è necessario sviluppare il targeting per Java 5. In caso contrario, si potrebbe accidentalmente fare affidamento su un metodo SDK specifico di Java 6 e simili.

+0

Si potrebbe rimuovere facilmente tramite un passo di elaborazione pre tuttavia. –

-1

@Override è valida in Java 5 ->http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/Override.html

io consiglio di controllare le impostazioni del compilatore del vostro progetto in Eclipse, forse a Progetto -> Compiler -> errore/avvertenze -> Annotazioni?

+0

+1 - Stavo per dire la stessa cosa. Uso anche @Override e sono ancora su jdk 1.5. – PSpeed

+8

@ La semantica di Override è cambiata tra Java 5 e 6 - in 5, ha causato un errore del compilatore quando utilizzato su un metodo che implementa un'interfaccia. In 6, causa un avvertimento quando * non * viene usato su tale metodo. La domanda riguarda come affrontare questa differenza. –

+0

Sì @Override è valido in Java 5. Ma le specifiche sono cambiate per Java6. In Java6, è possibile conoscere i metodi di annotazione che implementano i metodi di un'interfaccia. Questo non era possibile in Java6. –

-1

Java 6 è disponibile per OS X. Controllare l'aggiornamento del software. Quando lo hai, impostalo come la versione java predefinita, quindi compila.

+0

Questa non è davvero una soluzione quando vuole indirizzare anche Java 5. –

+0

Ti aggiri la domanda dell'OP. – akuhn

2

È possibile utilizzare JDK6 per compilare il codice 1.5. Utilizzare -bootclasspath, -target e -source. In alternativa, credo che il compilatore di Eclipse tratti lo @Override lo stesso (questo potrebbe essere sbagliato!).

1.5 ha terminato il periodo di fine vita e suggerisco di lasciarlo marcire.

+0

+1 per suggerire -target e -source.Sarebbe interessante vedere se questo funziona. –

+0

Funziona, l'hai provato? ^^ – akuhn

Problemi correlati