2010-08-21 13 views
8

Instalé m2eclipse para construir un proyecto de Java en Eclipse.Tengo errores de compilación con m2eclipse pero no con maven2 en la línea de comandos. ¿Mi m2eclipse está mal configurado?

Importé el proyecto de la siguiente manera:

Import-> 
Maven-> 
Existing Maven Projects-> 
Import Maven Projects-> 
- Select root directory 
- Select pom file 
- Click Finish 

Para estar seguro m2eclipse fue en realidad la construcción del proyecto, he eliminado el directorio de destino y se aseguró de que fue re-creado por m2eclipse y lo era. Pero a diferencia de la versión de línea de comandos de maven que construyó todo a la perfección, m2eclipse deja una gran cantidad de errores de compilación en el código fuente.

¿Es posible que no configuré m2eclipse correctamente? ¿Cómo vería esto?

This is a github link to the project Estoy intentando construir. Obtengo los errores de compilación @Override en this line. Dice "El método createNewToken debe anular un método de superclase".

+0

Publique algunos ejemplos de errores, por favor (por cierto, m2eclipse usa una versión incrustada de maven 3 de manera predeterminada, es decir, muy probablemente no sea la misma versión que usted en la línea de comandos). Pero publique algunos errores, no somos médiums :) –

+0

Puede activar la salida de depuración en las preferencias de maven para ver en detalle lo que está sucediendo. Sugiero que también intente actualizar las dependencias (haga clic derecho en project-> maven-> update dependencias iirc), quizás eso ayude. Además, ¿cómo estás construyendo el proyecto dentro de Eclipse? ¿Invoca explícitamente un objetivo/fase maven? Si es así, publica la configuración de ejecución. –

+0

En realidad, hasta donde puedo decir, todos los errores dicen "Eliminar anotación @Override" -> "El método x debe anular un método de superclase". Intenté (haga clic derecho en proyecto-> maven-> actualizar dependencias) pero no ayudó. En cuanto a la pregunta, cómo estoy construyendo el proyecto, bueno, acabo de importar el proyecto usando el archivo pom y asumí que se compilaría automáticamente. De hecho, dice: "Maven Builder: AUTO_BUILD" en la consola del eclipse. –

Respuesta

13

Actualización: El problema es el mismo que el descrito en ‘Must Override a Superclass Method’ Errors after importing a project into Eclipse y esto es lo que la respuesta aceptada dice:

Eclipse puede cumplir los pagos a Java 1.5 y que tienen las clases que implementan métodos de interfaz (que en Java 1.6 se puede anotar con @Override, pero en Java 1.5 solo se puede aplicar a métodos que reemplazan a un método de superclase).

Cambiar el nivel del compilador a Java 1.6 haría desaparecer el problema. Para ello, modifique la configuración del plugin del compilador:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
</plugin> 

y actualizar la configuración del proyecto (botón derecho del ratón en el proyecto continuación Maven V Configuración de la actualización del Proyecto) resuelve el problema bajo Eclipse.

O quédate con 1.5 pero elimina las anotaciones @Override problemáticas.

No sé cómo Taylor consiguió que las cosas funcionen con un nivel de compilador Java 1.5. Y mi conjetura es que el proyecto no se basaría en la línea de comandos con un JDK 5.


Pero a diferencia de la versión de línea de comandos del experto que construyó todo a la perfección, m2eclipse deja un gran número de errores de compilación en el código fuente.

Es difícil decir qué está sucediendo exactamente sin ver esos "errores" (¿son realmente errores?). Por favor, proporcione algunos rastros.

¿Es posible que no configuré m2eclipse correctamente? ¿Cómo vería esto?

Una diferencia es que m2eclipse usa por defecto una versión incrustada de Maven 3 que probablemente no es la misma versión que usted usa en la línea de comandos.Usted puede cambiar esto a través Ventana V Preferencias V Maven V Instalación (y añadir su propia instalación):

alt text

Pero mientras yo recomendaría usar la misma versión bajo Eclipse que en la línea de comandos, este es muy probable que no sea la causa del problema, las compilaciones de Maven 2 se deberían ejecutar en Maven 3 sin problemas.

+0

Intenté cambiar a la instalación de maven2 pero, como sospechabas, no tuvo ningún efecto sobre los errores de compilación. Pero gracias por la captura de pantalla. No sabía que era tan fácil cambiar la instalación de forma predeterminada. –

+0

Parece que Raoul está experimentando exactamente los mismos problemas con este código. Supuse que era solo algo que estaba haciendo. –

+0

No, no funciona para mí. –

1

Revisé el código. Tengo exactamente el mismo problema. El código parece estar roto.

Editar: Definitivamente es. Mire la clase com.jappstart.service.auth.UserDetailsServiceImpl. Quiere anular el método public final UserDetails loadUserByUsername(final String username) pero este método no existe en la interfaz que la clase implementa y no tiene superclase.

Editar: Bien, eso no explica por qué se construye con maven independiente. Esto también funciona para mí. Muy extraño. Parece que está pasando algo con la compilación que no funciona con m2eclipse.

Editar: Estoy bastante seguro de que el código funciona porque el bytecode es modificado por el plugin datanucleus. Cuando ejecuto el proyecto como creación maven (clic derecho-> Ejecutar-> paquete maven) crea con éxito la guerra con m2eclipse. Entonces mi suposición es que el problema es con el constructor de m2eclipse Maven.

+0

Gracias por revisar el código. Me alegro de que hayas podido verificar que funciona con maven independiente pero no con m2eclipse.Pero, basado en el consejo de Pascal, he configurado m2eclipse para usar mi instalación de maven independiente. Así que esto hace que sea aún más misterioso por qué habría una diferencia. –

+0

Sospecho que tiene que ver con el plugin datanucleus. Este complemento parece hacer algo de manipulación de códigos de bytes que podría explicar que el código "roto" se pueda compilar. No obstante, no entiendo por qué no parece funcionar con m2eclipse. –

1

Aparecerán los errores de reemplazo si eclipse está configurado para usar java 1.5 en lugar de 1.6. Verifique las propiedades del proyecto.

+0

@Chris ¿Has leído mi respuesta, Chris? Proporcioné la solución * correcta * (configurando el 'maven-compiler-plugin' para 1.6 ** IN ** el pom.xml). Este es el camino a seguir, m2eclipse deriva la configuración del pom.xml. Y esto que Taylor debería hacer, uno no debería tener que cambiar la configuración de IDE después de la importación. –

+1

Claro, cambiaré el POM a la lista 1.6 cuando tenga la oportunidad (probablemente mañana por la noche). La configuración de mi proyecto Eclipse estaba en 1.6, así que nunca me di cuenta. –

Cuestiones relacionadas