web-dev-qa-db-fra.com

maven "ne peut pas trouver le symbole" message inutile

C'est une question très simple, et c'est probablement un paramètre que je ne connais pas, mais Google est particulièrement inutile pour cette question, donnant des résultats sur les erreurs de compilation, pas sur la façon de modifier les messages d'erreur de compilation.

Lorsque je construis mon projet avec maven, cela me donne des messages d'erreur formatés comme suit:

[ERREUR] /path/to/source/Main.Java:[13,8] erreur: impossible de trouver le symbole

Lorsque je construis avec fourmi ou javac, il me dira en fait le symbole qu’il ne trouve pas dans le message d’erreur. maven me donne un numéro de ligne et la position du caractère, mais il serait plus utile d’afficher le symbole réel. La ligne ci-dessus est la seule ligne indiquée pour chacune des erreurs "impossible de trouver le symbole". Il n'y a pas de ligne au dessus ou en dessous qui donne le symbole. J'imagine qu'il doit y avoir un moyen d'obtenir que Maven me dise cette information, mais je ne sais pas ce que c'est. J'ai essayé l'option -e, comme mvn m'a dit d'essayer de l'utiliser, mais cela a donné une trace maven pour l'erreur, pas le symbole réel.

De l'aide?

Voici la sortie 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"

Et voici un exemple de message d'erreur (inutile), exactement comme le résultat de maven (uniquement avec les répertoires raccourcis):

[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] -------------------------------------------------------------

Les symboles qu'il ne peut pas trouver sont "fakeThing" et "fakeThing2", pas SoundEngineFilePanel.

63
mattg

Ceci est un bug dans le plugin du compilateur Maven, lié à JDK7, je pense. Fonctionne bien avec JDK6.

37
Peter Liljenberg

mettre à jour à 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>
34

Dans mon cas, le problème concernait un fichier jar enfant qui n'a pas été reconstruit car j'ai ajouté une nouvelle classe. Le fichier pom.xml de ce fichier jar n'était pas associé à mon échec pom.xml en tant que relation enfant à parent (à l'aide de la balise <parent>). . J'ai donc reconstruit le pot après lequel l'erreur avait disparu.

6
a.parfenov

J'ai eu le même problème. La raison en était que deux fichiers JAR n'avaient pas été ajoutés via la dépendance Maven. Ainsi, lorsque j'ai exécuté mvn compile, la console affiche l'erreur error:

Le symbole ne peut pas être trouvé, classe ... ".

Réparer:

  1. Supprimer les fichiers JAR du chemin de génération
  2. Ajouter au chemin de construction
  3. Exécuter mvn compile
4
Ajax

Dans mon cas, j’utilisais une dépendance définie par <scope>test</scope>. Cela a rendu la classe disponible au moment du développement mais, au moment de la compilation, j'ai reçu ce message.

Tourner la portée de la classe pour <scope>provided</scope> a résolu le problème.

2
Joabe Lucena

En raison de ce problème, cela se produit également dans le reconditionnement que vous avez défini dans le fichier POM.

Supprimez cela du fichier pom sous le plugin maven. Ça va marcher

<executions>
    <execution>
        <goals>
             <goal>repackage</goal>
        </goals>
    </execution>
</executions>
2
Anto Livish A

Même si j'utilise Java 7, maven 2.2.1 et que je reçois la même erreur, j'ai enlevé <scope>tests</scope> de mon pom et utilisé 

mvn clean -DskipTests=true install pour construire avec succès mes projets, sans mettre à niveau ma version maven.

2
abi1964

Ce n'est pas une fonction de Maven; c'est une fonction du compilateur. Regarder attentivement; les informations que vous recherchez se trouvent probablement dans la ligne suivante.

1
Isaac

Généralement, cette erreur apparaîtra lorsque la version de votre code de compilation sera différente de celle de votre code écrit. .__ Par exemple, écrivez un code qui s'appuie sur xxx-1.0.0.jar pour lequel une classe a la méthode A, mais la méthode a été remplacée par B dans xxx-1.1.0.jar. Si vous compilez du code avec xxx-1.1.0.jar, vous verrez l'erreur.

0
ulysses

si vous êtes dépendant d'un autre projet dans l'espace de travail et que ces projets ne sont pas construits correctement, une telle erreur peut survenir . essayez de construire ces projets dépendants en premier, cela peut aider 

0
Piyush Gharote

Je suppose que le compilateur se plaint d'une annotation non valide. J'ai remarqué qu'Eclipse n'affiche pas toutes les erreurs, comme une virgule à la fin d'un tableau dans une annotation. Mais la norme javac le fait.

0
asgoth

SOLUTION: @Avant de construire votre composant (en utilisant mvn clean install). Construisez le projet entier une fois et construisez à nouveau votre composant

POURQUOI SO:
Je reçois cette erreur plusieurs fois . La plupart du temps, je vais essayer de construire mon composant seul (car je n’ai pas apporté de modifications ailleurs). 

C'est vrai, mais ce fichier supplémentaire téléchargé récemment pourrait avoir été affecté par des modifications effectuées par un tiers (à l'intérieur de son composant). Faire une installation propre complète de MVN sur le projet entier m'a sauvé plusieurs fois

0
Ganesh Srini

J'ai eu le même problème avec Maven. Il se trouve que mon problème était, maven générait les dossiers avec des noms de cas différents. Je m'attendais à un fichier .service.MyFile mais dans le dossier cible, il s'agissait de Service/MyFile et Java est sensible à la casse. Il m'a fallu quelques heures pour le savoir et vous recommander de le vérifier.

0
Aléxia Dorneles

Je rencontrais un problème similaire dans Eclipse STS lorsque j'essayais de lancer une installation Maven sur un projet. J'avais modifié certaines versions des dépendances de mon fichier pom.xml pour ce projet et des projets pointés par ces dépendances. Je l'ai résolu en exécutant une installation Maven sur tous les projets que j'ai modifiés, puis en exécutant à nouveau l'installation sur le projet d'origine.

0
anthony stoico

Vous devriez peut-être vérifier vos propriétés IDE sensibles à la casse . J'ai eu le même problème et résolu en rendant Idea sensible à la casse (car mon système de fichiers est sensible à la casse): https: // confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch

0
Stepan Dyatkovskiy