Je suis sur l'environnement Windows et utilise maven pour compiler mon projet. Bien que je vienne de créer le projet et d’ajouter les dépendances de différentes libararies.
Comme je les ai ajoutés, maven a commencé à se plaindre du tools.jar
manquant. J'ai donc ajouté ci-dessous à mon pom.xml
:
<dependency>
<groupId>com.Sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${Java.home}/../lib/tools.jar</systemPath>
</dependency>
Quand j'ai lancé l'installation de maven, j'ai eu une erreur pour le pot manquant comme ci-dessous:
[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.Sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1]
Le problème est que le tools.jar
est dans "C:\Program Files\Java\jdk1.6.0_26\lib
" et qu'il est correctement défini dans la variable d'environnement Java_HOME
mais le maven est toujours à la recherche dans le dossier jre comme dans le message d'erreur "C:\Program Files\Java\jre6\lib\tools.jar
".
C:\>echo %Java_HOME%
C:\Program Files\Java\jdk1.6.0_26
Fait intéressant : lorsque j'ai défini le chemin complet dans la dépendance, cela a fonctionné correctement. Mais je ne veux pas coder durement.
<dependency>
<groupId>com.Sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar</systemPath>
</dependency>
Quelqu'un peut-il suggérer une solution dynamique pour cela?
C'est un bogue du support Eclipse Maven. Eclipse ne prend pas en charge toutes les propriétés Maven globales selon les spécifications Maven .
Selon les spécifications:
$ {Java.home} spécifie le chemin d'accès à l'environnement JRE_HOME actuel utiliser avec des chemins relatifs pour obtenir par exemple
Au moins dans Eclipse 4.3.1, ce n’est pas le cas, ici Java.home
pointe toujours sur le JRE utilisé pour lancer Eclipse}, et non sur le JRE de construction.
Pour résoudre le problème, vous devez démarrer Eclipse à l'aide du JRE de JDK en ajoutant quelque chose comme ceci à Eclipse.ini
(avant-vmargs
!):
-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
Il semble que votre Java_HOME soit configuré pour pointer vers le JRE dans Eclipse.
Vous ne devez JAMAIS utiliser les dépendances de la portée du système. Tout le code dans tools.jar sera déjà disponible uniquement via la machine virtuelle Java en cours d'exécution. Vous devriez supprimer cette dépendance complètement ..
De plus, afin de vérifier ce que Maven utilise à l'exécution, il suffit d'appeler
mvn -v
Si vous rencontrez toujours une dépendance au fichier jar en tant que problème, l'une des dépendances que vous avez ajoutées a cette dépendance (et sa qualité est vraiment mauvaise). Pour savoir lequel est utilisé
mvn dependency:tree
ou si cela échoue, supprimez simplement une dépendance après l'autre jusqu'à ce que la commande ci-dessus ait résolu le problème.
Ensuite, quand vous savez d'où ça vient, vous pouvez décider quoi faire. Un chemin serait d'utiliser une exclusion sur la dépendance qui tire les outils.
La propriété Maven $ {Java.home} est définie et prise à différents endroits en fonction de votre exécution Eclipse:
à partir du JRE par défaut sélectionné pour l'espace de travail
Fenêtre> Préférences> Java> JRE installés
du projet spécifique Eclipse,
Chemin de construction Java> Bibliothèques> Bibliothèque système JRE
à partir de la configuration d'exécution.
Configurations d'exécution> Configuration d'exécution spécifique> JRE
Rappelez-vous que vos chemins d’accueil JRE pointent vers un JDK ou un JRE sous JDK
On dirait que vous utilisez Maven dans Eclipse. Eclipse ne consulte pas Java_HOME.
Assurez-vous que vous avez défini votre JRE dans les préférences Eclipse sur votre JDK souhaité.
Lorsque vous ajoutez la variable d'environnement Java_HOME, s'il y a des espaces dans le chemin, vous devez envelopper le tout entre guillemets.
Vous utilisez peut-être une mauvaise installation Maven. Basculez-le dans Fenêtre> Préférences> Maven> Installations. Le mien a été installé chez Fedora Maven; revenir à la valeur par défaut (la version intégrée à m2e) corrige le problème pour moi.
Je suppose que ce problème est dû au fait que l'installation de Fedora Maven utilisait OpenJDK de Fedora, ce qui place probablement tools.jar dans un emplacement étrange (tout ce qui concerne OpenJDK de Fedora est étrange et non standard). Maven ne peut donc pas le trouver.