el mensaje “no puede encontrar el símbolo” de maven no sirve de nada

Esta es una pregunta realmente simple, y es probable que sea un entorno que desconozco, pero Google es particularmente inútil para esta pregunta, dando resultados sobre errores de comstackción, no cómo cambiar los mensajes de error de comstackción.

Cuando construyo mi proyecto con maven, me dará los mensajes de error formateados aproximadamente de la siguiente manera:

[ERROR] /path/to/source/Main.java:[13,8] error: no se puede encontrar el símbolo

Cuando construyo con ant o javac, en realidad me dirá el símbolo que no puede encontrar en el mensaje de error. maven me da un número de línea y una posición de personaje, pero mostrar el símbolo real sería más útil. La línea de arriba es la única línea dada para cada uno de los errores de “no se puede encontrar el símbolo”. No hay una línea arriba o abajo que da el símbolo. Imagino que tiene que haber alguna forma de que maven me diga esa información, pero no sé qué es. Probé la opción -e, ya que mvn me dijo que intentara usarla, pero me proporcionó un seguimiento de maven para el error, no el símbolo real.

¿Alguna ayuda?

Aquí está la salida de mvn –version

Apache Maven 3.0.4 (rNON-CANONICAL_2012-10-24_11-25_mockbuild; 2012-10-24 07:25:04-0400) Maven home: /usr/share/maven Java version: 1.7.0_09-icedtea, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.6.6-1.fc17.x86_64", arch: "amd64", family: "unix" 

Y aquí hay un mensaje de error de ejemplo (inútil), exactamente como el resultado de maven (solo con directorios abreviados):

 [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /path/to/source/SoundEngineFilePanel.java:[33,8] error: cannot find symbol [ERROR] class SoundEngineFilePanel /path/to/source/SoundEngineFilePanel.java:[36,8] error: cannot find symbol [INFO] 2 errors [INFO] ------------------------------------------------------------- 

Los símbolos que no puede encontrar son “fakeThing” y “fakeThing2”, no SoundEngineFilePanel.

Este es un error en el plugin de comstackción Maven, relacionado con JDK7, creo. Funciona bien con JDK6.

actualizar a 3.1:

   org.apache.maven.plugins maven-compiler-plugin 3.1  1.7 1.7   

Esto ocurre debido a este problema, es decir, el reempaquetado que definió en el archivo POM.

Eliminar esto del archivo pom bajo el plugin maven. Funcionará

    repackage    

Yo tuve el mismo problema. La razón fue que no tenía dos archivos JAR agregados a través de la dependencia de Maven, así que cuando mvn compile , la consola muestra el error de error:

El símbolo no se puede encontrar, Clase … “.

Arreglarlo:

  1. Eliminar los archivos JAR de la ruta de comstackción
  2. Añadir a la ruta de comstackción
  3. Ejecutar mvn compile

En mi caso, el problema estaba en un contenedor hijo que no fue reconstruido ya que he agregado una nueva clase, pom.xml de ese contenedor hijo no estaba relacionado con mi pom.xml fallido como relación hijo-padre (usando etiqueta). Así que reconstruí el flask para niños después del cual el error se había ido.

Incluso estoy usando Java 7, maven 2.2.1 y estaba obteniendo el mismo error, eliminé tests de mi pom y usé

mvn clean -DskipTests=true install para construir mis proyectos con éxito, sin actualizar mi versión de maven.

Esto no es una función de Maven; es una función del comstackdor. Mira de cerca; la información que está buscando es más probable en la siguiente línea.

Supongo que el comstackdor se queja de una anotación inválida. Me di cuenta de que Eclipse no muestra todos los errores, como una coma al final de una matriz en una anotación. Pero el javac estándar sí lo hace.

Obtuve un problema similar en Eclipse STS al intentar ejecutar una instalación de Maven en un proyecto. Había cambiado algunas versiones en las dependencias de mi archivo pom.xml para ese proyecto y los proyectos a los que apuntaban esas dependencias. Lo resolví ejecutando una instalación de Maven en todos los proyectos que cambié y luego ejecutando la instalación en el original nuevamente.

Tuve el mismo problema con maven. Sucede que mi problema era que maven estaba generando las carpetas con diferentes nombres de casos. Esperaba un .service.MyFile pero en la carpeta de destino era Service / MyFile y java es sensible a mayúsculas y minúsculas. Tardé unas horas en descubrirlo, te recomiendo que lo revises.

SOLUCIÓN: @Antes de construir su componente (usando mvn clean install). Construya todo el proyecto una vez y vuelva a construir su componente

PORQUE :
Recibo este error muchas veces. La mayoría de las veces intentaré construir mi componente solo (ya que no he hecho cambios en otros lugares).

Correcto, pero ese flask adicional que se ha descargado recientemente podría haberse visto afectado por los cambios realizados por un tercero (dentro de su componente). Hacer una instalación completa de mvn clean en todo el proyecto me ahorró muchas veces

si tiene dependencia de algún otro proyecto en el espacio de trabajo y estos proyectos no se comstackn correctamente, tal error podría aparecer. intente construir tales proyectos dependientes primero, puede ayudar

En general, este error aparecerá cuando la versión del código de comstackción sea diferente de la del código escrito. Por ejemplo, escriba el código que se basa en xxx-1.0.0.jar que una clase tiene el método A, pero el método cambió a B en xxx-1.1.0.jar. Si comstack código con xxx-1.1.0.jar, verá el error.

En mi caso, estaba usando una dependencia con ámbito como test . Esto hizo que la clase estuviera disponible en el momento del desarrollo pero, en tiempo de comstackción, recibí este mensaje.

Gire el scope de la clase para provided resuelva el problema.

    Intereting Posts