2009-06-12 14 views
127

Tengo un proyecto existente que usa @Override en métodos que reemplazan interfaz métodos, en lugar de métodos de superclase. No puedo alterar esto en el código, pero me gustaría que Eclpse deje de quejarse sobre la anotación, ya que aún puedo compilar con Maven.¿Por qué Eclipse se queja de @Override en los métodos de interfaz?

¿Qué debo hacer para deshabilitar este error?

Nota: Debido a los requisitos del proyecto, necesito compilar para Java 1.5.

+0

¿Pero parece que la fuente está dirigida a Java 6? – akarnokd

+0

De hecho. Java 5 era un requisito tardío para el soporte de mac. –

Respuesta

256

El uso de la anotación @Override en los métodos que implementan los declarados por una interfaz solo es válido desde Java 6 en adelante. Es un error en Java 5.

Asegúrese de que sus proyectos IDE estén configurados para usar un Java 6 JRE, y que la "compatibilidad de origen" esté configurada en 1.6 o superior. Abra el cuadro de diálogo Ventana> Preferencias y busque Java> Compiler. Allí puede establecer el "nivel de cumplimiento del compilador" en 1.6.

Recuerda que Eclipse puede anular estas configuraciones globales para un proyecto específico, así que verifícalas también.


Actualización:

El error bajo Java 5 no es sólo con Eclipse; usando javac directamente desde la línea de comando le dará el mismo error. No es un código fuente Java 5 válido.

Sin embargo, puede especificar la opción -target 1.5 a JDK 6 javac, que producirá un archivo de clase de versión Java 5 a partir del código fuente Java 6.

+0

No, no lo hará. Producirá un mensaje de error "javac: la versión de origen 1.6 requiere la versión de destino 1.6". –

+9

No, no lo hará. Producirá un archivo de clase compilado. Solo proporciona ese error si especifica la opción -source 1.6, que no es necesaria para que esto funcione. – erickson

+0

Ya sabes, dado que construyo manualmente de todos modos, puedo simplemente dejar el nivel de fuente en 1.6. No pude conseguir ningún tipo de configuración mixta funcionando, y esto parece más simple. –

6

Puede cambiar la configuración del compilador para aceptar la sintaxis de Java 6 pero generar la salida de Java 5 (según recuerdo). Y establezca la "Compatibilidad de archivos de clase generada" un poco más baja si es necesario por su tiempo de ejecución. Actualización: Comprobé Eclipse, pero se queja si configuro la compatibilidad de origen en 1.6 y la compatibilidad de clase en 1.5. Si no se permite 1.6, generalmente hago un comentario manual sobre las anotaciones ofensivas @Override en la fuente (lo que no ayuda a su caso).

Update2: Si lo hace solamente manual de construcción, se podría escribir un pequeño programa que copia el proyecto original en uno nuevo, tiras anotaciones @ Override de las fuentes de Java y que acaba de golpear proyecto de limpieza en Eclipse.

+0

¿Puede proporcionarnos alguna información específica? –

+0

Está en la misma página según lo indicado por erickson. – akarnokd

+0

El proyecto tiene varios GB de tamaño. Una simple "copia" ni siquiera es práctica. :/ –

1

También puedes probar Retroweaver para crear la versión Java5 de las clases Java6.

34

Proyecto-> Propiedades-> java compiler->

Habilite los valores específicos del proyecto -sí Compilador cumplimiento - 1.6 archivos de clase generados y compatibilidad fuente - 1,5

+0

Gracias - no me di cuenta de que cada proyecto también tiene su propia configuración – whostolemyhat

+2

en mi caso, necesitaba desactivar esta opción. –

10

Compruebe también si el proyecto tiene facetas. La versión de Java puede ser anulada allí.

+0

¡Puntuación! Tenías razón, mi faceta del proyecto estaba anulando la configuración de cumplimiento global. ¡Gracias! – Garet

1

Utilice Eclipse para buscar y reemplazar (eliminar) todas las instancias de "@Override". A continuación, agregue las anulaciones que no son de interfaz usando "Limpiar".

Pasos:

  1. seleccionar los proyectos o carpetas que contienen los archivos de origen.
  2. Vaya a "Buscar> Buscar ..." (Ctrl-H) para abrir el cuadro de diálogo Buscar.
  3. Vaya a la pestaña "Búsqueda de archivos".
  4. Ingrese "@Override" en "Contenido de texto" y "* .java" en "Patrones de nombre de archivo". Haga clic en "Reemplazar ...", luego en "Aceptar" para eliminar todas las instancias de "@Override".
  5. Vaya a "Ventana> Preferencias> Java> Estilo de código> Limpiar" y cree un nuevo perfil.
  6. Edite el perfil y desmarque todo excepto "Código faltante> Agregar anotaciones faltantes> @Override". Asegúrese de que "Implementaciones de métodos de interfaz" esté desmarcada.
  7. Seleccione los proyectos o carpetas que contienen sus archivos de origen.
  8. Seleccione "Fuente> Limpiar ..." (Alt + Shift + s, luego u), luego "Finalizar" para volver a agregar las anulaciones no relacionadas con la interfaz.
6

Se pueden habilitar configuraciones específicas del proyecto. Seleccione su proyecto Project > Properties > Java Compiler, uncheckEnable project specific settings o cambie Jdk 1.6 y superior sin olvidar el correspondiente JRE.
En caso de que no funcione, elimine su proyecto de eclipse, elimine .settings folders, .project, .classpath archivos. clean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project y eclipse. Funcionó para mí

0

entendía su problema, cambie su JDK de su JDK a greaterThan 1,5

0

mediante la configuración que los proyectos IDE están configurados para utilizar un JRE de Java 6 o superior a veces no elimina el error eclipse. Para mí, un reiniciar del Eclipe IDE ayudó.

0

Incluso después de cambiar el ajuste de conformidad del compilador a 1.6 o 1.7 de pestaña ventanas, luego prefernces, a continuación, java, a continuación, compilador y establecer el cumplimiento compilador, todavía estaba teniendo este problema. La idea es que necesitemos ir a la carpeta del proyecto, haga clic con el botón derecho, Java y configure el compilador conforme a 1.6 o superior. Esto funcionó para mí.

Cuestiones relacionadas