¿Por qué Eclipse se queja de @Override en los métodos de interfaz?


Tengo un proyecto existente que usa @Override en métodos que anulan métodos de interfaz, en lugar de métodos de superclase. No puedo alterar esto en código, pero me gustaría que Eclpse dejara de quejarse de la anotación, ya que todavía puedo construir con Maven.

¿Cómo puedo desactivar este error?

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

Author: xyz, 2009-06-12

10 answers

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

Asegúrese de que sus proyectos IDE están configurados para usar un JRE Java 6, y que la "compatibilidad de código fuente" está establecida en 1.6 o superior. Abra el cuadro de diálogo Ventana > Preferencias y vaya a Java > Compilador. Allí puede establecer el" nivel de cumplimiento del compilador " en 1.6.

Recuerde que Eclipse puede anular estos ajustes globales para un proyecto, así que revisa esos también.


Actualización:

El error bajo Java 5 no es solo con Eclipse; usar javac directamente desde la línea de comandos le dará el mismo error. No es válido el código fuente de Java 5.

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

 260
Author: erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-20 23:12:05

Proyecto - > Propiedades - > compilador java - >

Habilitar la configuración específica del proyecto-sí Cumplimiento del compilador-1.6 archivos de clase generados y compatibilidad con el código fuente-1.5

 36
Author: mitko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-20 08:04:28

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

 10
Author: gdoumenc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-08 08:54:13

La configuración específica del proyecto puede estar habilitada. Selecciona tu proyecto Project > Properties > Java Compiler, uncheck el Enable project specific settings o cambiar Jdk 1.6 y por encima de no 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. Me funcionó

 7
Author: Henry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-19 10:30:25

Puede cambiar la configuración del compilador para aceptar la sintaxis de Java 6 pero generar una salida de Java 5 (según recuerdo). Y establecer la "Compatibilidad de archivos de clase generados" un poco más bajo si es necesario por su tiempo de ejecución. Actualizar: He comprobado Eclipse, pero se queja si establezco compatibilidad de origen a 1.6 y compatibilidad de clase a 1.5. Si no se permite la versión 1.6, normalmente comento manualmente las anotaciones @Override ofensivas en la fuente (lo que no ayuda a su caso).

Update2: Si haga solo la compilación manual, puede escribir un pequeño programa que copie el proyecto original en uno nuevo, elimine las anotaciones @Override de las fuentes java y simplemente presione Clean project en Eclipse.

 6
Author: akarnokd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-12 18:02:26

También puede intentar Retroweaver para crear la versión Java5 a partir de clases Java6.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-12 20:20:52

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

Pasos:

  1. Seleccione los proyectos o carpetas que contienen sus archivos de origen.
  2. Vaya a "Buscar > Buscar..."(Ctrl-H) para abrir el diálogo de búsqueda.
  3. Vaya a la pestaña "Búsqueda de archivos".
  4. Introduzca "@Override" en "Conteniendo texto" y "*.java " en "Patrones de nombre de archivo". Haga Clic En "Reemplazar...", luego "OK", para eliminar todas las instancias de "@Anular".
  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 " no esté marcada.
  7. Seleccione los proyectos o carpetas que contienen sus archivos de origen.
  8. Seleccione "Fuente > Limpiar..."(Alt + Shift + s, luego u), luego" Finish " para agregar de nuevo las anulaciones que no son de la interfaz.
 1
Author: Peter Tseng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-08 01:08:19

Entendí su problema, cambie su jdk de su jdk a greaterthan 1.5

 0
Author: Ravi Kumar Ravanam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-23 11:43:16

Al configurar que los proyectos IDE están configurados para usar un JRE Java 6 o superior, a veces no elimina el error eclipse. Para mí un reinicio del IDE Eclipe ayudó.

 0
Author: IstaLibera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 09:34:45

Incluso después de cambiar la configuración de cumplimiento del compilador a 1.6 o 1.7 desde windows, luego prefernces, luego java, luego compilador y configuración de la compilador de cumplimiento, todavía estaba teniendo este problema. La idea es que necesita ir a la carpeta del proyecto, haga clic derecho, Java y set compiler el cumplimiento de 1.6 o superior. Esto funcionó para mí.

 0
Author: Ranjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-07 07:21:51