Esta es una pregunta realmente simple, y probablemente sea una configuración en algún lugar que no conozco, pero Google está siendo particularmente inútil para esta pregunta, dando resultados sobre errores de compilación, no sobre cómo cambiar los mensajes de error de compilación.
Cuando construyo mi proyecto con maven, me dará 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 carácter, 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 indique el símbolo. Me imagino que tiene que haber alguna forma de conseguir que Maven me diga esa información, pero no sé cuál es. Probé la opción -e, ya que mvn me dijo que intentara usarla, pero me dio un rastreo 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 la salida 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.
fuente
javac
yAnt
hace.Respuestas:
Este es un error en el complemento del compilador de Maven, relacionado con JDK7, creo. Funciona bien con JDK6.
fuente
actualizar a 3.1:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
fuente
En mi caso, el problema estaba en un frasco secundario que no se reconstruyó ya que agregué una nueva clase, pom.xml de ese frasco secundario no estaba relacionado con mi pom.xml fallido como relación hijo-padre (usando
<parent>
etiqueta). Así que reconstruí el frasco secundario después del cual desapareció el error.fuente
Yo tuve el mismo problema. La razón fue que tenía dos archivos JAR que no se agregaron a través de la dependencia de Maven, por lo que cuando ejecuté
mvn compile
, la consola muestra el error:Arreglarlo:
mvn compile
fuente
Esto ocurre también debido a este problema, es decir, al reempaquetado que definió en el archivo POM.
Elimine esto del archivo pom en el complemento maven. Funcionará
<executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions>
fuente
En mi caso, estaba usando una dependencia con alcance
<scope>test</scope>
. Esto hizo que la clase estuviera disponible en tiempo de desarrollo pero, en tiempo de compilación, recibí este mensaje.Gire el alcance de la clase para
<scope>provided</scope>
resolver el problema.fuente
Incluso estoy usando Java 7, maven 2.2.1 y recibí el mismo error,
<scope>tests</scope>
eliminé mi pom y usémvn clean -DskipTests=true install
para construir con éxito mis proyectos, sin actualizar mi versión maven.fuente
Si tiene dependencia de algún otro proyecto en el espacio de trabajo y estos proyectos no se construyen correctamente, puede producirse dicho error. intente construir proyectos tan dependientes primero, puede ayudar
fuente
Esta no es una función de Maven; es una función del compilador. Mirar de cerca; la información que busca se encuentra probablemente en la siguiente línea.
fuente
SOLUCIÓN: @Antes de construir su componente (usando mvn clean install). Construya el proyecto completo una vez y vuelva a construir su componente
POR QUÉ:
Recibo este error muchas veces. La mayoría de las veces intentaré construir mi componente solo (ya que no he realizado cambios en ningún otro lugar).
Correcto, pero ese jar 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 limpia completa de mvn en todo el proyecto me salvó muchas veces
fuente
Supongo que el compilador se queja de una anotación no válida. He notado que Eclipse no muestra todos los errores, como una coma al final de una matriz en una anotación. Pero el estándar lo
javac
hace.fuente
fakeThing = new JPanel()
. Es solo un error estándar "no se puede encontrar el símbolo" para el que javac mostraría "fakeThing". maven simplemente no lo muestra.Estaba teniendo un problema similar en Eclipse STS cuando intentaba 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.
fuente
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 distingue entre mayúsculas y minúsculas. Me tomó unas horas descubrirlo, te recomiendo que lo revises.
fuente
Generalmente, este error aparecerá cuando la versión de su código de compilación sea diferente a la del código escrito. Por ejemplo, escriba un código que se base en xxx-1.0.0.jar y que una clase tenga el método A, pero el método cambió a B en xxx-1.1.0.jar. Si compila código con xxx-1.1.0.jar, verá el error.
fuente
Quizás debería verificar las propiedades sensibles a mayúsculas y minúsculas de su IDE. Tuve el mismo problema y lo resolví haciendo que Idea distinga entre mayúsculas y minúsculas (ya que mi sistema de archivos distingue entre mayúsculas y minúsculas): https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch
fuente