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

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    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 éprouvé

    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
    Points : 1 230
    Points
    1 230
    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 éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    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 éprouvé

    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
    Points : 1 230
    Points
    1 230
    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 éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    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 éprouvé

    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
    Points : 1 230
    Points
    1 230
    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 !

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    pour m2e come je l'ai dis j'utilise la 3.0.3
    preferences>maven>installation>embedded 3.0.3/1.0.1.201106291304

    J'ai effectivement ajouté une dépendance mais sans succès.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <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>
    c'est ce qui me faisait dire qu'il me semblait que m2e ne passe pas la variable car ça n'a rien changé.

    je n'ai qu'une jre de défini et qu'un jdk sur ma machine mais ça ne fonctionne pas. du coup je ne comprends pas comment est defini cette variable java.home vu qu'elle n'apparaît nulle part et que lorsque je l'utilise ça ne semble pas répondre au besoin.

    si je dois la définir je n'ai toujours pas compris comment je dois m'y prendre
    j'ai essayé de l'ajouter dans preferences>java>build path>classpath variable mais ça n'a pas marché

    Je ne comprends pas bien ton propos tu dis que java.home dans maven doit pointer sur la jre de la jdk et dans m2e sur le jdk

    comment dans ce cas utiliser sur la même machine et pour le même projet soit m2e soit maven ?
    je ne vois pas comment une même variable peut avoir deux valeurs.

    si je dois définir la variable dans m2e je n'ai pas trouvé où.
    et s'il utilise (et je ne vois pas comment il ferait autrement) la seul et unique JRE installé sur la machine je ne m'explique pas pourquoi éclipse indique toujours une erreur de dépendance sur la pom concernant tools.jar

    je te remercie mais tout ça n'est vraiment pas clair.
    je vais encore faire des essais et j'espère trouver une solution viable car si aujourd'hui je bricole dans mon coin je dois passer au stade industriel dans peu de temps et là il n'est pas question de bricolage c'est des dizaines de postes qui devront se partager de nombreux projets

    je regarde encore demain ce point si je parviens à une solution claire et reproductible sur Mac Pc et Linux je pense que je reviendrais faire un résumé.

    au pire comme tu dis je passerais par une variable système.

    merci encore
    et bonne année.
    A+JYT

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je ne pense pas que ce soit la bonne solution mais je viens de progresser sur MacosX

    j'ai donc ajouté la dépendence et je suis partis à la recherche de tools.jar là ou il le cherchait

    et le jdk MacosX ne définit par de tools.jar
    on n'a pas
    jdk_xxx/jre
    jdk_xxx/lib/tools

    mais
    jdk_xxx/Home
    jdk_xxx/Classes/classes.jar (les classes de tools.jar sont là !!!)

    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar

    j'ai donc fais deux lien symbolique et ça marche.
    sur mac uniquement pour le moment.

    il semble donc que sur Mac mon pb était plus un problème de jdk Spécifique à MacOS

    comme je ne peux pas modifier l'install système des poste MacOS je n'ai pas encore fini

    mais je pense que je peux copier classes.jar dans /opt/un dossier à moi/tools.jar
    et définir la dépendance dans settings.xml en mettant ce dossier

    demain je vois ça sous windows. pour windows l'idéal serait de conserver le path standard

    A+JYT

  9. #9
    Membre éprouvé

    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
    Points : 1 230
    Points
    1 230
    Par défaut
    Le notion de Java Home a tjrs été à géométrie variable...

    java.home est utilisé de partout dans Maven ! Une simple compilation demande javac... il faut bien qu'il trouve la JDK !

    Avant de te répondre cet aprem, j'ai fait quelques tests (en mode embedded avec Windows):
    - dans Eclipse => java.home pointe sur une JRE non associée un un JDK (il suffit de voir les détails de l'installation).
    - dans une session Maven (test dans un plugin maven que je développe) => java.home pointe sur le JRE du JDK que j'ai paramétré dans les préférences d'Eclipse. J'ai aussi testé l'affichage de java.home à l'aide d'un tache ant dans Maven sans noter de problème.

    => j'imagine donc que m2e fait proprement la conversion !

    Si tu souhaites passer par une variable projet, tu dois pouvoir la définir dans le fichier de paramétrage de Maven: settings.xml !

    Je n'ai pas testé java.home dans une dépendance système ! Mais je n'ai pas trouvé de bugzilla dans la base Maven du projet...

    a+

    Si la JDK de Mac n'a pas une archi standard... au pire, tu pourras mettre la dépendance sur le JAR dans le fichier settings.xml de Maven ! Tu as aussi la possibilité d'utiliser les profils en jouant sur les settings globaux et/ou utilisateurs pour activer le profil adequat...

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    voici ce que j'ai fais sous windows

    $JAVA_HOME = C:\Program Files\Java\jdk1.6.0_30\jre

    lancement d'éclipse avec l'option -vm C:\Program Files\Java\jdk1.6.0_30\jre\bin\java -clean

    définition de la jre dans éclipse
    C:\Program Files\Java\jdk1.6.0_30\jre

    choix de maven dans m2e
    C:\camel\outils\maven\apache-maven-3.0.3

    création d'un workspace éclipse

    exécution en ligne de commande pour vérif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > cd myproject
    > mvn clean
    OK
    > mvn install
    OK
    import du projet maven dans éclipse
    erreur sur le pon Missing artifact com.sun:tools:jar:1.5.0

    ouverture du pom
    info de m2e sur la variable ${java.home}
    this expression evaluate to ${java.home}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    run as Maven clean
    OK
    run as Maven install
    OK
    exactement ce que j'ai depuis le début

    modification du settings.xml comme indiqué dans la doc maven
    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
       <profiles>
         <profile>
           <id>windows_profile</id>
           <activation>
             <os>
               <family>Windows</family>
             </os>
           </activation>
           <properties>
             <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
           </properties>
         </profile>
         <profile>
           <id>osx_profile</id>
           <activation>
             <os>
               <family>mac</family>
             </os>
           </activation>
           <properties>
             <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
           </properties>
         </profile>
       </profiles>
    rechargement du settings.xml dans les paramètres de m2e

    modification du pom pour en tenir compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <dependency>
          <groupId>sun.jdk</groupId>
          <artifactId>tools</artifactId>
          <version>1.5.0</version>
          <scope>system</scope>
          <systemPath>${toolsjar}</systemPath>
        </dependency>
    fermeture d'éclipse
    relance d'éclipse avec les mêmes paramètre
    reconstruction d'un wokspace
    re ajout du projet maven
    et toujour la même erreur

    mais cette fois lorsque je vais sur la variable ${toolsjar} dans le pom
    m2e m'indique
    this expression evaluate to C:\Program Files\Java\jre6\..\lib\tools.xml

    j'ai fait une recherche dans tous le fichiers d'éclipse que ce soit dans le workspace ou dans le dossier d'éclipse
    toutes les référence au JRE que je trouve sont
    C:\Program Files\Java\jdk1.6.0_30\jre

    c'est des plus étrange

    je pense avoir trouvé une solution mais je ne suis pas sur que ce soit la meilleure
    dans settings.xml j'ai ajouté
    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
       <profiles>
         <profile>
           <id>windows_profile</id>
           <activation>
             <os>
               <family>Windows</family>
             </os>
           </activation>
           <properties>
             <toolsjar>${env.JAVA_HOME}/../lib/tools.jar</toolsjar>
           </properties>
         </profile>
         <profile>
           <id>osx_profile</id>
           <activation>
             <os>
               <family>mac</family>
             </os>
           </activation>
           <properties>
             <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
           </properties>
         </profile>
       </profiles>
    dans le pom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <dependency>
          <groupId>sun.jdk</groupId>
          <artifactId>tools</artifactId>
          <version>1.5.0</version>
          <scope>system</scope>
          <systemPath>${toolsjar}</systemPath>
        </dependency>
    et cette fois tout semble fonctionner


    cela signifie donc que sur tous mes poste je devrais modifier le settings.xml
    et sur les poste windows vérifier que la variable JAVA_HOME pointe sur un jdk

    tous cela ne me semble pas très propre.
    A+JYT

  11. #11
    Membre éprouvé

    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
    Points : 1 230
    Points
    1 230
    Par défaut
    Au passage je t'ai trouvé cette discussion qui fait référence à FAQ Apache. Celà, devrait te donner une solution plus légère...

    Dans la solution proposeé il est dit: "The following code includes tools.jar for JDKs on Windows, Linux and Solaris (it is already included in the runtime for Mac OS X and some free JDKs)"...

    Pour répondre à ton dernier message: les settings.xml utilisateurs sont les réglages utilisateurs... donc, effectivement ils peuvent être différents d'un poste à l'autre !

    Après, comme dit, plus haut, tu as la possibilité de définir des réglages globaux où tu peux regrouper les différents profils... le développeur final n'aura à activer que tel ou tel profil manuellement OU automatiquement (comme dans la solution proposée par la FAQ Apache... donc pas besoin de settings par poste)!


    Citation Envoyé par sekaijin Voir le message
    mais cette fois lorsque je vais sur la variable ${toolsjar} dans le pom
    m2e m'indique
    this expression evaluate to C:\Program Files\Java\jre6\..\lib\tools.xml

    j'ai fait une recherche dans tous le fichiers d'éclipse que ce soit dans le workspace ou dans le dossier d'éclipse
    toutes les référence au JRE que je trouve sont
    C:\Program Files\Java\jdk1.6.0_30\jre

    c'est des plus étrange
    Effectivement ! Es-tu sûr d'avoir le JDK dans tes prefs en première position...

    cdlt,
    Philippe

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par Philippe Bastiani Voir le message
    ....
    Effectivement ! Es-tu sûr d'avoir le JDK dans tes prefs en première position...

    cdlt,
    Philippe
    merci encore pour tout ce temps passé

    mais oui je suis sur d'avoir le jdk en premier dans me prf vu que je n'ai que le jdk et rien d'autre.

    j'ai fais un test j'ai viré le jre de ma machine rebooté et relancé eclipse
    et là magique il trouve le bon jre (ça a dire celui qui est dans le jdk)
    dans les info d'éclipse je vous qu'il utilise
    -vm C:\Program Files\Java\jdk1.6.0_30\jre\client\jvm.dll

    du coup j'ai réinstallé le jre et j'ai cherché à changer la jvm au démarrage
    j'ai ajouté
    -vm C:\Program Files\Java\jdk1.6.0_30\jre\bin\javaw.exe dans le fichier .ini

    et la grosse surprise
    dans les infos eclipse je vois
    -vm C:\Program Files\Java\jdk1.6.0_30\jre\bin\javaw.exe dans le fichier .ini
    -vm C:\Program Files\Java\jre6\client\jvm.dll

    et il cherche le tools.jar dans la jre et non la jdk

    ça deviens de plus en plus mystérieux ce truc.

    A+JYT

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 89
    Points
    89
    Par défaut
    Concernant le JDK utilisé par eclipse, tu peux le forcer en le déclarant dans eclipse.ini (ce fichier se trouve à la racine du répertoire d'extraction d'eclipse)

    Avant la ligne "-vmargs", il suffit d'ajouter les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -vm
    C:\Program Files\Java\jdk1.6.0_25\bin\javaw.exe
    (Bien les mettre sur 2 lignes, c'est important)

    Concernant tools.jar, j'ai eu exactement le même problème. Je l'ai résolu en créant un faux composant maven à partir du tools.jar que j'ai pris dans le JDK.

    Voici les instructions (source ici)

    There are three methods for dealing with this scenario.

    1) Install the dependency locally using the install plugin. The method is the simplest recommended method. For example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -DartifactId=non-maven-proj -Dversion=1 -Dpackaging=jar
    Notice that an address is still required, only this time you use the command line and the install plugin will create a POM for you with the given address.
    2) Create your own repository and deploy it there. This is a favorite method for companies with an intranet and need to be able to keep everyone in synch. There is a Maven goal called deploy:deploy-file which is similar to the install:install-file goal (read the plugin's goal page for more information).
    3) Set the dependency scope to system and define a systemPath.
    En espérant que ça t'aidera

  14. #14
    Membre éprouvé

    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
    Points : 1 230
    Points
    1 230
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    merci encore pour tout ce temps passé
    Quelques minutes pour les tests... Et puis celà m'a remémorré que le SDK Mac n"avait pas la même archi !

    Citation Envoyé par sekaijin Voir le message
    ...du coup j'ai réinstallé le jre et j'ai cherché à changer la jvm au démarrage
    j'ai ajouté
    -vm C:\Program Files\Java\jdk1.6.0_30\jre\bin\javaw.exe dans le fichier .ini

    et la grosse surprise
    dans les infos eclipse je vois
    -vm C:\Program Files\Java\jdk1.6.0_30\jre\bin\javaw.exe dans le fichier .ini
    -vm C:\Program Files\Java\jre6\client\jvm.dll

    et il cherche le tools.jar dans la jre et non la jdk
    Nope ici... Les 2 vm s'expliquent, si tu as mis l'option vm après l'option vmargs. Ce qui est après vmargs est interprété comme étant des paramètres pour la vm... tu te retrouve ainsi avec la vm par défaut + des paramètres non interprétés par la vm!
    => Les 2 règles indiquées par liouan sont absolument à respecter concernant l'option vm dans la .ini.....

    Pour le reste: plus d'idée ! Chez moi c'est bien le contexte java construit à partir du JDK des prefs qui est envoyé à Maven...
    Et, puis je ne comprends pas comment tu peux builder tes projets avec javac sans la ref du jdk...

    Un idée à la ??? de dernière minute: c'est comme si ta JDK n"était pas reconnue ! Auquel cas, il reprendtait la JRE par défaut... Regardes les log d'Eclipse en démarrant avec les options -console -consoleLog -debug pour plus de détails...

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    non ma jdk est bien reconnue depuis le début je répète qu'il n'y a que la jdk de référencé donc depuis le début je n'ai absolument aucun problème pour compiler que ce soit fia Runs As d'éclipse ou en ligne de commande

    mon éclipse n'a que la JDK de référencée
    et ma JAVA_HOME référence aussi la jdk

    le seul problème vient de m2e qui lorsqu'il met à jour les dépendances d'un projet utilise la jre
    de mes derniers tests je conclus qu'il utilise la jre qui a servi à lancer éclipse pour calculer la variable java.home

    mais tout compile depuis le début
    Le problème c'est que je ne peux pas demander à des dizaines de développeur d'ignorer une erreur dans éclipse, car s'ils s'habituent à avoir éclipse en rouge c'est toute la qualité des projets qui risquent d'en pâtir.

    A+JYT

  16. #16
    Membre éprouvé

    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
    Points : 1 230
    Points
    1 230
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    mais tout compile depuis le début
    Le problème c'est que je ne peux pas demander à des dizaines de développeur d'ignorer une erreur dans éclipse, car s'ils s'habituent à avoir éclipse en rouge c'est toute la qualité des projets qui risquent d'en pâtir
    Il fallait préciser que tu avais des erreurs dans la GUI Eclipse (editeurs de sources java & POM) et non pas des erreurs d'exécution de Maven depuis M2E...
    Depuis le début, je te parle d'exécution du POM (d'où mes tests dans mon pluging, avec le plugin ant de maven et mes remarques sur javac)... et, non pas de validation des sources

    Donc effectivement: si on place la dépendance SYSTEM dans le POM
    => erreurs dans les sources... packages non trouvés avec ${java.home}
    => pas d'erreur avec chemin en dur.

    Donc, il semblerait que la GUI de M2E utilise la ${java.home} d'Eclipse

    Est-on synchro sur nos réflexions ?
    => BUG à signaler à Sonatype (la ML de M2E semble HS en ce moment... mais il y a tjrs la possibilité d'ouvrir un bugzilla)

    Il y a peut-être un workaround: faire une exclusion pour la phase de validation... mais c'est assez crad ! Et je n'ai pas testé...
    Ou... démarrer Eclipse sur la JDK en respectant l'ordre des paramètres -vm -vmargs; ainsi que le format de -vm sur 2 lignes...

    Les solutions proposées par liouan peuvent aussi répondre à ta problématique... i..e. pousser la jar dans un référentiel local ou partagé ! Perso, je n'aime pas trop mais bon...

    Cdlt,
    Philippe

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par Philippe Bastiani Voir le message
    Il fallait préciser que tu avais des erreurs dans la GUI Eclipse (editeurs de sources java & POM) et non pas des erreurs d'exécution de Maven depuis M2E...
    Depuis le début, je te parle d'exécution du POM (d'où mes tests dans mon pluging, avec le plugin ant de maven et mes remarques sur javac)... et, non pas de validation des sources
    ...
    Je pense qu'on c'est pas bien compris car c'est bien ce que j'ai écrit dès le début et dans les échanges j'ai même clairement ajouté
    Citation Envoyé par Sekaijin Voir le message
    ...
    exécution en ligne de commande pour vérif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > cd myproject
    > mvn clean
    OK
    > mvn install
    OK
    import du projet maven dans éclipse
    erreur sur le pon Missing artifact com.sun:tools:jar:1.5.0

    ouverture du pom
    info de m2e sur la variable ${java.home}
    this expression evaluate to ${java.home}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    run as Maven clean
    OK
    run as Maven install
    OK
    exactement ce que j'ai depuis le début
    ...
    Sorry si je t'ai fait perdre du temps
    mais encore merci à tous.

    je vais voir avec tout ça quelle solution je retiens

    finalement il y avait deux pb avec le même symptôme
    1. sur MacOS pb de jdk qui n'a pas la même structure
    2. sur Windows pb de m2e qui utilise la référence à la JVM éclipse et non le JDK définit


    Merci
    A+JYT

  18. #18
    Membre éprouvé

    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
    Points : 1 230
    Points
    1 230
    Par défaut
    Pas de blèmes... pour info, j'ai ouvert une discussion avec Igor Fedorenko de Sonatype concenant la non utilisation des preferences Java dans l'editeur source/POM...

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour

    Je teste différente solution à partir de ce qui à été posté ici.

    Je reviens sous peux pour vous faire part de mon expérience et donner la solution qui est la plus viable pour le cas général.

    Je marquerais alors ce post comme résolu.

    A+JYT

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour.

    1) Sous MacOS pour régler le pb du JDK[*]Créer un lien symbolique dans le dossier du jdk ri reproduit le chemin lib/tools.jar et qui pointe vers Classes/classes.jar
    c'est la moins pire que j'ai trouvée.

    Si on joue sur une variable toolsjar comme expliqué dans un post précédent.
    Il faut mettre cette définition qui pointe vers le bon jar sur tous les postes Mac Windows et Unix et utiliser la variable dans le projet
    ou mettre l'activation des profils décrite précédemment dans les projets.

    Avec le lien symbolique on n'intervient que sur les Mac (il faut passer à le refaire lors du changement de JDK)

    cette affaire sera surement résolue dans les prochaines versions vu qu'Apple a décidé d'abandonner son JDK et de déverser ses apports des le JDK standard.

    On devrait donc avoir un JDK MacOS ayant la même structure que les autres.
    Et le reste du monde verra apparaître quelques petits changements.

    2) Sous éclipse Windows. Le problème vient bien du plug-in m2e qui cherche le tools.jar par rapport à la jvm qui sert à lancer éclipse et pas du tout en fonction ni du $JAVA_HOME système ni de la JRE déclarée par le développeur dans ces préférences.[*] la solution est donc de modifier le eclipse.ini et d'utiliser le jdk pour lancer éclipse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    --launcher.defaultAction
    openFile
    -vm
    C:/Program Files/Java/jdk1.6.0_30/jre/bin/client/jvm.dll
    -vmargs
    -Dosgi.requiredJavaVersion=1.5
    -Xms40m
    -Xmx384m
    Attention à l'ordre des arguments. vous devez obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    --launcher.overrideVmargs
    -product
    org.eclipse.epp.package.java.product
    -vm
    C:/Program Files/Java/jdk1.6.0_30/jre/bin/client/jvm.dll
    pour déployer à plus grande échelle ce changement nous avons retenu un doc explicatif pour les développeurs qui installerait une version prise sur le net où ailleurs dans la maison. Et nous avons défini un master pour une installation pacagée.

    A+JYT

+ 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