IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

cannot find symbol alors que dependance OK


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut cannot find symbol alors que dependance OK
    Bonjour,

    j'essaye d'essayer Maven en buildant une petite lib contenant des utilitaires, genre copie de fichiers, compressions, etc ...

    En l'occurrence j'ai un problème avec Apache Commons Compress v1.0 qui est bien reconnu comme dépendance mais qui n'est pas utilisé lors de la compilation.

    Je m'explique, voici la partie du pom.xml de mon projet listant mes dépendances :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <dependencies>
     
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
     
    	<dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-compress</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
        </dependency>
     
    	<dependency>
          <groupId>commons-configuration</groupId>
          <artifactId>commons-configuration</artifactId>
          <version>1.6</version>
          <scope>compile</scope>
        </dependency>
     
    	<dependency>
          <groupId>commons-lang</groupId>
          <artifactId>commons-lang</artifactId>
          <version>2.4</version>
          <scope>compile</scope>
        </dependency>
     
      </dependencies>
    Si je commente la partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-compress</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
        </dependency>
    J'ai une erreur normale disant que le package org.apache.commons.compress.archivers.tar does not exist suivi de toutes mes erreur s de cannot find symbol class TarOutputStream, TarArchive, etc ...

    Donc là c'est normal.

    Maintenant si je décommente la dépendance, j'ai plus l'erreur du package qui does not exist mais j'ai par contre toujours les erreurs de cannot find symbol (exactement les mêmes) ce qui est, avec ma faible connaissance de Maven, incompréhensible.

    Notez que j'ai bien redéfini dans le pom.xml le JDK à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <build>
     
        <plugins>
     
    	  <plugin>
    	    <groupId>org.apache.maven.plugins</groupId>
    	    <artifactId>maven-compiler-plugin</artifactId>
    	    <configuration>
    	      <source>1.6</source>
    	      <target>1.6</target>
    	    </configuration>
    	  </plugin>
     
    	</plugins>
     
      </build>
    J'utilise la commande Voilà, j'ai bien regardé les FAQs de dev.com, et de Maven, j'ai cherché sur ce forum et dans la mail archive des users et je trouve rien qui correspond.

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Un truc bizarre de plus :

    Si je commente dans mon code toutes les méthodes utilisant commons-compress je n'ai aucun problème à la compilation tout se passe bien.

    Donc les autres lib de commons ne sont pas concernées par ce problème, c'est spécifique à commons-compress.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2007
    Messages : 84
    Par défaut
    Tout d'abord, 2-3 petites choses:

    - Il vaut mieux utiliser mvn compile à la place de mvn compiler:compile (utiliser le cycle de vie et non pas un appel direct à un mojo).
    - Le <scope>compile<scope> est celui par défaut, donc pas besoin de le mentionner.

    Sinon, quelles sont exactement les classes qu'ils ne trouve pas ?

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Ok pour les infos.

    TarOutputStream, TarArchive, et TarEntry sont les 3 seules classes du paquet org.apache.commons.compress.archivers.tar qui sont utilisées, et logiquement j'ai un cannot find symbol pour chaque occurrence d'une utilisation dans mon code.

    Pour le moment c'est le seul JAR qui me pose un problème. Les autres fonctionnent normalement.

  5. #5
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Bon ok en examinant la Javadoc du site d'apache commons je m'aperçois que j'ai pas la même implémentation d'utilisée dans le code de ma lib locale.

    Je sais pas d'où ça sort mais donc du coup l'erreur est normale.

    Merci.

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2007
    Messages : 84
    Par défaut
    Effectivement ces classes ne sont pas présentes dans la version 1.0 de la lib.

    Elles ont pu être renommées, bougées, ou "refactorées" massivement.

    Mais au juste, d'où vient le fait que tu utilises ces classes ?
    En utilisant un IDE par exemple (et soit un plugin y intégrant Maven voire un lancement d'une commande du style mvn eclipse:eclipse pour Eclipse), tu n'aurais jamais pu utiliser une classe n'étant pas dans tes librairies !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. cannot find symbol class sprite
    Par Risike dans le forum Java ME
    Réponses: 3
    Dernier message: 27/06/2007, 11h33
  2. [Débutant] Problème de "Cannot find symbol"
    Par Majora dans le forum Interfaces Graphiques en Java
    Réponses: 11
    Dernier message: 14/05/2007, 17h58
  3. [Bizarre] cannot find symbol
    Par Fredo02 dans le forum Langage
    Réponses: 1
    Dernier message: 22/12/2006, 01h01
  4. [debug] "cannot find symbol" classe interne
    Par NailMaker dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2006, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo