2010-01-25 9 views
10

Duplicar posible:
Why does Eclipse complain about @Override on interface methods?¿Puedo obtener Java 5 para ignorar los errores de @Override?

tengo algo de código Java que fue escrito usando Eclipse y el SDK Java 6, por lo que los métodos que implementan una interfaz se anotan con @Override - una anotación que es legal en Java 6, pero no en Java 5.

Me gustaría compilar el mismo código con el SDK de Java 5 (javac en Mac OS X 10.5). Todo compila y funciona bien, excepto las anotaciones @Override. ¿Hay alguna manera en que pueda hacer que javac ignore las anotaciones @Override para este proyecto o es la única solución para eliminarlas?

Respuesta

4

Aparentemente se puede actualizar a Java 1.5 u21 y esto va a solucionar el problema:

Why is javac failing on @Override annotation

+0

Leí esa pregunta y todas sus respuestas, y no está confirmada para JDK 1.5u21 y 1.5u22, ver http://stackoverflow.com/questions/2335655/why-is-javac-failing-on-override-annotation # comment3379487_2335752 –

6

Desafortunadamente, la única manera es eliminar realmente las anotaciones.

Si desea que su código se compile y ejecute con Java 5, debe desarrollar la orientación a Java 5. De lo contrario, podría confiar accidentalmente en un método de SDK específico de Java 6 y tal.

+0

Uno podría eliminarlos a través de un paso de procesamiento previo sin embargo. –

-1

@ Override es válido en Java 5 ->http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/Override.html

recomiendo que compruebe los valores de compilación de su proyecto en Eclipse, tal vez en el Proyecto -> Generador -> error/advertencias -> Anotaciones?

+0

+1 - Iba a decir lo mismo. Yo uso @Override también y todavía estoy en jdk 1.5. – PSpeed

+8

La semántica de @ Override cambió entre Java 5 y 6; en 5, provocó un error de compilación cuando se usaba en un método que implementaba una interfaz. En 6, causa una advertencia cuando * no * se usa en dicho método. La pregunta es acerca de cómo lidiar con esta diferencia. –

+0

Sí @Override es válido en Java 5. Pero la especificación ha cambiado para Java6. En Java6, puede conocer los métodos de anotación que implementan métodos de una interfaz. Esto no fue posible en Java6. –

-1

Java 6 está disponible para OS X. Verifique la actualización del software. Cuando lo tenga, configúrelo como la versión java predeterminada y luego compile.

+0

Esa no es realmente una solución cuando también quiere apuntar a Java 5. –

+0

Olvidaste la pregunta de OP. – akuhn

2

Puede usar JDK6 para compilar el código 1.5. Use -bootclasspath, -target y -source. Alternativamente, creo que el compilador de Eclipse trata el @Override de la misma (¡esto podría estar mal!).

1.5 ha terminado su período de fin de servicio, y sugiero dejarlo pudrirse.

+0

+1 Por sugerir -objetivo y -source.Sería interesante ver si esto funciona. –

+0

¿Funciona esto? ¿Lo intentó? ^^ – akuhn

Cuestiones relacionadas