Errores 'Debe anular un método de superclase' después de importar un proyecto a Eclipse

1251

Cada vez que tengo que volver a importar mis proyectos en Eclipse (si reinstalé Eclipse o cambié la ubicación de los proyectos), casi todos mis métodos anulados no están formateados correctamente, lo que causa el error:

El método debe anular un método de superclase

Cabe mencionar que esto es con proyectos de Android por cualquier razón, los valores del argumento del método no siempre se rellenan, por lo que tengo que rellenarlos manualmente. Por ejemplo:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

inicialmente se completará así:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

Lo extraño es que, si elimino mi código y hago que Eclipse vuelva a crear automáticamente el método, usa los mismos nombres de argumentos que ya tenía, por lo que no sé realmente dónde está el problema, aparte de que formatea automáticamente el método para yo.

Esto se convierte en un problema tener que recrear manualmente TODOS mis métodos anulados a mano. Si alguien puede explicar por qué sucede esto o cómo solucionarlo. Yo seria muy feliz.

¿Tal vez se deba a la forma en que estoy formateando los métodos, que están dentro de un argumento de otro método?

Tim H
fuente
1
Verifique este elemento, explica el uso de anulación. Creo que esta práctica es muy importante para todo, no solo para esta situación en particular. stackoverflow.com/questions/94361/…
oagostinho

Respuestas:

1433

Eclipse está predeterminado en Java 1.5 y tiene clases que implementan métodos de interfaz (que en Java 1.6 se pueden anotar @Override, pero en Java 1.5 solo se pueden aplicar a métodos que anulan un método de superclase).

Vaya a sus preferencias de proyecto / IDE y configure el nivel del compilador de Java en 1.6 y también asegúrese de seleccionar JRE 1.6 para ejecutar su programa desde Eclipse.

alphazero
fuente
35
Mi proyecto se configuró en 1.6, así que tomé las estrellas y lo configuré en 1.5, lo reconstruí y luego volví a 1.6. Milagrosamente esto resolvió mi problema. ¡Gracias por señalarme en la dirección correcta!
Michael Krauklis
66
teniendo el mismo problema ... probé la sugerencia dada en esta respuesta pero aún no tuvo éxito. :( :(
aditya_gaur
66
@MichaelKrauklis Soy 1.6 y tengo este problema. Lo configuré en 1.5 y lo limpié y volví a 1.6 y lo limpié nuevamente. Aún no resuelto. ¿Algunas ideas?
Pacerier
66
El mismo problema aquí, en mi caso, no había instalado JDK 1.6, solo el último 1.7, que aparentemente no funciona con Android. Instalar el 1.6 anterior y luego seguir estas instrucciones, debería funcionar :)
NoBugs
44
Debe mencionarse (como en los comentarios a las otras respuestas) a menudo se requiere una compilación limpia seguida de un reinicio.
gsingh2011
308

Con Eclipse Galileo , vaya a Eclipse -> elemento de menú Preferencias, luego seleccione Java y Compilador en el cuadro de diálogo.

Ahora todavía puede mostrar el nivel de cumplimiento del compilador en 1.6, pero aún ve este problema. Así que ahora seleccione el enlace " Configurar ajustes específicos del proyecto ... " y allí verá que el proyecto está configurado en 1.5, ahora cambie esto a 1.6. Deberá hacer esto para todos los proyectos afectados.

Esta interfaz de menú / diálogo bizantina es típica del pobre diseño de la interfaz de usuario de Eclipse.

Pablo
fuente
78

En caso de que esto le ocurra a cualquiera que haya probado el método alphazero y Paul y aún no haya funcionado.

Para mí, eclipse de alguna manera 'almacenó en caché' los errores de compilación incluso después de hacer un Proyecto> Limpiar ...

Tuve que desmarcar Proyecto> Construir automáticamente, luego hacer un Proyecto> Limpiar y luego volver a compilar.

Además, en caso de duda, intente reiniciar Eclipse . Esto puede solucionar muchos errores incómodos e inexplicables.

Rollin_s
fuente
44
No solo hice eso, sino que desmarqué "Iniciar una compilación automáticamente" en el cuadro de diálogo Limpiar. Solo entonces funcionó para mí.
Wilerson
3
Tuve que reiniciar eclipse también, incluso después de eliminar los errores.
Dave Cameron
42

Para resolver este problema, vaya a las propiedades de su Proyecto -> Compilador Java -> Seleccione el nivel de cumplimiento del compilador a 1.6-> Aplicar.

false9striker
fuente
22

La respuesta de Paul funcionó para mí parcialmente. Todavía tenía un error entonces. Entonces, además de eso, también tuve que ir a Propiedades-> Facetas del proyecto y configurar la versión de Java de 1.5 a 1.6.

Quizás eso ayude.

Ulrich
fuente
14

Chicos en mi caso ninguna de las soluciones anteriores funcionó.

Tuve que eliminar los archivos dentro del espacio de trabajo del Proyecto:

  • .proyecto
  • .classpath

Y la carpeta:

  • configuración

Luego copié los de un proyecto similar que estaba funcionando antes. Esto logró arreglar mi proyecto roto.

¡Por supuesto, no use este método antes de probar las alternativas anteriores !.

will824
fuente
14

Si nada de lo anterior ayuda, asegúrese de tener seleccionado un " Entorno de ejecución " adecuado y no un "JRE alternativo".

Se encuentra en:

Proyecto -> Ruta de compilación -> Bibliotecas

Seleccione JRE System Libraryy haga clic Edit....

Si se selecciona "JRE alternativo ...", cámbielo a un "Entorno de ejecución" apropiado como JavaSE-1.8 (jre1.8.0_60). No tengo idea de por qué, pero esto lo resolverá.

phil294
fuente
2
Seleccioné un "Entorno de ejecución", luego presioné OK y el error desapareció. Luego volví a este mismo cuadro de diálogo y seleccioné "Workspace default JRE (...)", que era mi selección anterior cuando recibí el error de Eclipse, luego presioné OK, ¿y el error no ocurrió? Esto debe ser un error de interfaz de usuario de Eclipse o algo así (estoy en Eclipse Neon 4.6.2)
mljrg
11

Esta es la segunda vez que encuentro este problema. primera vez según la recomendación de alphazero funcionó. pero en la segunda vez que configuré 1.6 no funciona como 'CACHE' este error después de limpiar y reconstruir.

Intente desactivar 'Construir automáticamente' como dijo Rollin_s -> error todavía aquí!

Así que eliminé el proyecto problemático (ya establecido en 1.6) del Explorador de paquetes y lo importé nuevamente -> comienza una reconstrucción y no hay error esta vez

Espero que esto ayude a alguien

ob.yann
fuente
10

La corrección debe anular un error de método de superclase no es difícil, solo necesita cambiar la versión de origen de Java a 1.6 porque desde Java 1.6 se puede usar la anotación @Override junto con el método de interfaz. Para cambiar la versión de origen a 1.6, siga los pasos a continuación:

  1. Seleccione Proyecto, haga clic derecho, Propiedades
  2. Seleccione Java Compiler y marque la casilla de verificación "Habilitar configuraciones específicas del proyecto"
  3. Ahora haga que el nivel de cumplimiento del compilador sea 1.6
  4. Aplicar cambios
Sunil
fuente
10

En mi caso, este problema ocurrió cuando importé un proyecto Maven a Eclipse. Para resolver esto, agregué lo siguiente en pom.xml:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Luego, en el menú contextual del proyecto, vaya a "Maven -> Actualizar proyecto ..." y presione OK.

Eso es. Espero que esto ayude.

mljrg
fuente
Gracias, supongo que esto anula la configuración del pom padre o algo así. (Advierto el problema al revés, no hay problema del eclipse, pero el compilador de Maven me arrojó "debe anular, etc.")
Asoub
6

En mi caso, ninguna de las soluciones anteriores funciona. Tengo que retirar mi código fuente a otra carpeta. Desde eclipse, seleccione Archivo> Cambiar espacios de trabajo> Otro ... y luego importe el código a los nuevos espacios de trabajo. Funciona después de eso.

Hắc Huyền Minh
fuente
2

Esto sucede cuando su proyecto maven usa un nivel de cumplimiento del compilador diferente y Eclipse IDE usa un nivel de cumplimiento del compilador diferente. Para solucionar esto, necesitamos cambiar el nivel de cumplimiento del compilador del proyecto Maven al nivel que utiliza IDE.

1) Para ver los usos de nivel de cumplimiento del compilador de Java en Eclipse IDE

*) Ventana -> Preferencias -> Compilador -> Nivel de cumplimiento del compilador: 1.8 (o 1.7, 1.6 ,, ect)

2) Para cambiar el nivel de cumplimiento del compilador Java del proyecto Maven

*) Vaya a "Proyecto" -> "Propiedades" -> Seleccione "Compilador Java" -> Cambie el nivel de cumplimiento del compilador: 1.8 (o 1.7, 1.6, etc.)

HashanR
fuente