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 :

Erreur "Missing artifact com.sun:tools:jar:1.5.0"


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut Erreur "Missing artifact com.sun:tools:jar:1.5.0"
    Le retour de la vengeance II il semble.


    Je ne compte pas le nombre de message sur le net que j'ai trouvé concernant ce problème. j'ai testé des dizaines de solutions proposées ici où là en vain.

    j'utilise m2e avec maven 3.0.3
    la compil en ligne de commande pas de pb mais eclipse ne trouve pas Missing artifact com.sun:tools:jar:1.5.0

    mon JAVA_HOME est bien un jdk
    c:\....\jdk1.6.0_25

    dans éclipse la JRE est c:\....\jdk1.6.0_25\jre
    la JSE-1.6 (ou JSE-1.5) utilise bien la JRE installée qui est bien celle du jdk1.6.0_25

    dans le dédale le paramètres d'éclipse j'ai peut-être oublié quelque chose mais je ne sais où. toujours est-il qu'il m'est impossible de compiler mes projets qui on besoin de ce jar.

    le plus étrange est que si j'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <exclusions>
            <exclusion>
              <artifactId>tools</artifactId>
              <groupId>com.sun</groupId>
            </exclusion>
          </exclusions>
    sur toutes mes dépendances et j'en ai des centaines
    éclipse compile sans problème.

    mais je ne peux pas repasser des dizaines de pon de projets que j'importe et les modifier pour simplement pouvoir compiler.

    par exemple pour compiler les tutos de Camel in Action j'ai du faire un rechercher remplacer de par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <exclusions>
            <exclusion>
              <artifactId>tools</artifactId>
              <groupId>com.sun</groupId>
            </exclusion>
          </exclusions>
        </dependency>
    ce n'est pas viable.

    merci de toute aide que vous pourriez m'apporter.

    A+jyt
    PS: cette question (que ce soit pour m2e ou maven seul) est si récurrente qu'elle devrait à mon avis figurer dans la FAQ

  2. #2
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Quelle est ta dépendance dans ton POM ? Quelle est ta version de M2E ?

    Tu dis utiliser maven 3.0.3 donc avec Maven externe à M2E : exact ? As-tu essayé avec la version incluse dans M2E ?

    Pour info: il y a des problèmes récurents avec JAVA_HOME (et MAVEN_HOME)... L'option -vm d'Eclipse ou le positionnement de JAVA_HOME semblent innopérant pour certains plugins maven

    Par ailleurs: si dans tes prefs, il y a plusieurs JREs installées, ce n'est pas nécessairement celle qui est sélectionnée qui est prise en compte ! Perso, je ne laisse qu'une seule JDK dans les prefs d'Eclipse...

    a+
    Philippe

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par Philippe Bastiani Voir le message
    Quelle est ta dépendance dans ton POM ? Quelle est ta version de M2E ?
    la majorité des dépendances camel servicemix
    pour la version de m2e cette une des toute dernière je travaille avec éclipse indigo et seules les toutes dernière version fonctionne avec. (je vien de supprimer toutes les version de java que javais accumulé sur ma machine pour refaire une install propre)
    Citation Envoyé par Philippe Bastiani Voir le message
    Tu dis utiliser maven 3.0.3 donc avec Maven externe à M2E : exact ? As-tu essayé avec la version incluse dans M2E ?
    Non m2e utilise en interne maven 3.0.3 (le plugin m2e est livré avec la 3.0.2 mais j'ai fait la mise à jour de la version incluse pour corriger un autre pb que j'avais avec)

    pour info j'ai aussi maven en ligne de commande et aussi en version 3.0.3 et là ça marche

    Citation Envoyé par Philippe Bastiani Voir le message
    Pour info: il y a des problèmes récurents avec JAVA_HOME (et MAVEN_HOME)... L'option -vm d'Eclipse ou le positionnement de JAVA_HOME semblent innopérant pour certains plugins maven

    Par ailleurs: si dans tes prefs, il y a plusieurs JREs installées, ce n'est pas nécessairement celle qui est sélectionnée qui est prise en compte ! Perso, je ne laisse qu'une seule JDK dans les prefs d'Eclipse...
    dans éclipse je n'ai qu'une seule jre de déclaré.
    Citation Envoyé par Philippe Bastiani Voir le message

    a+
    Philippe
    Merci à toi

    A+JYT

  4. #4
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    la majorité des dépendances camel servicemix
    pour la version de m2e cette une des toute dernière je travaille avec éclipse indigo et seules les toutes dernière version fonctionne avec. (je vien de supprimer toutes les version de java que javais accumulé sur ma machine pour refaire une install propre)
    Je parlais de la dépendance de tools.jar (i.e. celle qui pose problème)... Comment indiques tu où trouver le JDK dans ta dépendence ?

    Essayes aussi en utilisant le jar Maven depuis M2E: Preferences/Maven/Installations puis add... pour utiliser réellement Maven !

    a+
    Philippe

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Je ne déclare pas de dépendance à tools.jar c'est lorsque j'ajoute une dépendance à camel ou à service mix que m2e ne peut résoudre une dépendance à tools.jar
    mais moi je ne la déclare pas.

    mais je ne pense pas que ça vienne du choix de package maven utilisé par m2e car toutes les actions
    maven compile
    maven test
    etc. du menu run as fonctionnent sans difficulté dès que j'exclus la dépendance à tools.jar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-core</artifactId>
          <exclusions>
            <exclusion>
              <artifactId>tools</artifactId>
              <groupId>com.sun</groupId>
            </exclusion>
          </exclusions>
        </dependency>
    si je ne mets pas l'exclusion tout marche normalement en ligne de commande mais m2e ne valide pas mon pom

    j'ai essayé de déclarer la dépendance à tools.jar comme expliqué dans certain post sur le net en utilisant le scope system mais il me faut alors un chemin absolu

    du coup impossible de continuer à travailler en équipe ni à utiliser le night build les postes de dev son soit windows soit macos et le build est sous linux
    les chemin son différents

    j'ai essayé d'utiliser la variable java.home mais il semble que m2e ne la passe pas à maven
    déjà éclipse ne la déclare pas et si je le fait à la main (ajouter la variable à éclipse) m2e ne l'utilise pas
    et si je mets la variable java.home dans le pon celui-ci est dépendant de ma machine

    c'est un vrai casse tête ce truc
    vu le nombre de posts sur le net c'est fou qu'il n'y ait pas une solution "Officielle" car je suis loin d'être un cas isolé.

    tools.jar fait parti du JDK des plus standards.

    comment font les gens ? j'imagine bien que tout les gens qui tombe sur ce problème le contourne avec un artifice qui ne marche que chez eux.
    Mais sur des projets qui font intervenir des dizaines de développeurs de part le monde ? comment font-ils

    A+JYT








    ma version m2e est : m2e - Maven Integration for Eclipse 1.0.100.20110804-1717 org.eclipse.m2e.feature.feature.group Eclipse.org - m2e

  6. #6
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    ma version m2e est : m2e - Maven Integration for Eclipse 1.0.100.20110804-1717 org.eclipse.m2e.feature.feature.group Eclipse.org - m2e
    Donc tu utilises la version 3.02 de Maven pour M2E... M2E dispose de sa propre implémentation de Maven ! Pour utiliser, le Maven CLI 3.0.3, tu dois le paramétrer dans Preferences / Maven / Installations ! On verra plus loin comment celà pourrait être utile...

    Tu dois absolument indiquer la dépendance sur Tools.jar... Il faut suivre les indication de Maven. A savoir: pour tous les jars de la JDK, il faut mettre une dépendance du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>sun.jdk</groupId>
          <artifactId>tools</artifactId>
          <version>1.5.0</version>
          <scope>system</scope>
          <systemPath>${java.home}/../lib/tools.jar</systemPath>
        </dependency>
      </dependencies>
      ...
    </project>
    java.home n'a pas la même signification pour Maven et Eclipse:
    - Pour, Maven, qui impose l'utilisation d'une JDK cette variable doit pointer sur la JRE incluse dans la JDK... En gros $JAVA_HOME/jre !
    - Pour Eclipse, qui n'impose rien, cette variable pointe sur la JRE qui est utilisée au lancement d'Eclipse (et, non pas, celle que tu paramètres dans les Préférences d'Eclipse)...

    M2E transfère bien java.home à Maven... A priori, il sélectionne la première (c'est un bug) JRE installée; et, construit la variable au format requit par Maven => il faut donc une JDK comme première entrée. Je dis bien une JDK et non pas la JRE d'une JDK (bref: un $JAVA_HOME et non pas un JRE_HOME)...

    Maintenant, si le problème persiste... effectivement, comme tu le dis, il n'est pas recommandé d'avoir de dépendance système dans le POM => pas de chemin en dur ! Mais rien n'interdit de mettre cette dépendance système dans ton settings.xml... Les solutions sont donc ici:
    -Tu pourrais, déclarer une variable projet dans tes settings.xml (dépendante de ton OS), et l'utiliser dans ton POM à la place de java.home.
    - Tu peux imposer une variable d'environnement système; et, l'utiliser dans ton POM ($(env.TOTO) pour la variable TOTO)...
    => Bref, tu as des solutions pour que ton POM reste indépendant de ton système !

    Si le problème persiste (j'en doute), tu peux imposer l'utilisation de Maven CLI dans M2E. C'est totalement transparent: il suffit comme dit plus haut
    -d'avoir un installation de maven fonctionnelle (i.e. avec les var d'environnement qui vont bien)
    -de paramètrer M2E pour utiliser ton Maven externe.
    Après... dans ton POM, tu peux utiliser java.home, JAVA_HOME ou tout autre variable interne ou d'environnement pour définir ta dépendance !

    Enfin si le problème reste insoluble: il ne faut pas hésiter à poser la question dans le forum de M2E... Les développeurs de Sonatype sont très présents sur la liste (nota: la ML semble HS depuis 1 semaine )...

    Bonne Année !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/09/2014, 17h30
  2. Réponses: 1
    Dernier message: 21/10/2010, 11h59
  3. com.sun.tools.javac.Main is not on the classpath.
    Par cascadox dans le forum ANT
    Réponses: 4
    Dernier message: 01/09/2010, 02h23
  4. Réponses: 4
    Dernier message: 23/02/2009, 19h21
  5. Réponses: 3
    Dernier message: 21/01/2009, 10h53

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