79 votes

JDK tools.jar comme dépendance de maven

Je voudrais mettre JDK tools.jar comme dépendance de compilation. J'ai trouvé quelques exemples qui indiquent d'utiliser le systemPath comme suit :

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

Le problème est que le chemin n'est pas correct pour Mac Os X (mais il l'est pour Windows et Linux). Pour lui, le chemin correct est ${java.home}/../Classes/classes.jar .

Je cherche un moyen de définir une propriété maven de telle sorte que si le système est détecté comme étant Mac Os X, la valeur est fixée à ${java.home}/../Classes/classes.jar sinon, elle est fixée à vers ${java.home}/../lib/tools.jar (comme il est possible de le faire avec ANT). Quelqu'un a-t-il une idée ?

0 votes

0 votes

@user7610 Il ne s'agit pas d'un doublon, cette question traite de la situation pré-Java 9. Le duplicata que vous suggérez traite de la situation post-Java 9.

1voto

Marty Points 351

Le commentaire de Edward est correct.

Vous avez besoin du profil ET vous avez besoin du dependency en dehors de la profiles bloc. Le profil détermine simplement quelle valeur ${toolsjar} va avoir.

<dependencies>
    <dependency>
        <groupId>jdk.tools</groupId>
        <artifactId>jdk.tools</artifactId>
        <version>jdk1.8.0</version>
        <scope>system</scope>
        <systemPath>${toolsjar}</systemPath>
    </dependency>
</dependencies>

0voto

user889030 Points 909

Instructions appropriées pour les débutants

Tout d'abord, ajoutez ce profil au fichier Pom.xml au-dessus de la balise ou ailleurs dans le fichier.

<profiles>
    <profile>
        <id>default-profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <file>
                <exists>${java.home}/../lib/tools.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
        </properties>
    </profile>
    <profile>
        <id>mac-profile</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${java.home}/../Classes/classes.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
        </properties>
    </profile>
</profiles>

puis Corriger le chemin de JRE

Goto :

Windows > Préférences > JREs installés

Sélectionnez le JRE installé et double-cliquez dessus ou, à partir du menu de droite, cliquez sur Modifier et assurez-vous que le chemin d'accès de JRE se trouve dans JDK, par exemple :

C:\Program Fichiers \Java\jdk1.8.0_181\jre

si vous avez installé JRE séparément, alors eclipse aura choisi JRE autonome comme :

C:\Program Fichiers \Java\jre1.8.0_181\

alors changez-le en JRE qui est fourni avec le JDK :

C:\Program Fichiers \Java\jdk1.8.0_181\jre

-11voto

toTem Points 1

Ma solution :

  1. mettre le tools.jar de Sun dans le répertoire $JAVA_HOME/lib
  2. créer un lien symbolique dans le répertoire $JAVA_HOME/.. lib nommé où la cible sera $JAVA_HOME/lib

8 votes

Ce n'est pas une bonne solution car elle implique d'effectuer certaines actions sur chaque machine où le fichier JAR doit être mis dans le classpath.

0 votes

J'ai essayé ceci et des variantes de ceci en me basant sur des solutions trouvées ailleurs et je n'ai pas obtenu les résultats escomptés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X