Maven ne choisit pas JAVA HOME correctement

je suis dans l'environnement windows et j'utilise maven pour compiler mon projet. Bien que je viens de créer le projet et ai ajouté les dépendances pour divers libararies.

comme je les ai ajoutés maven a commencé à se plaindre pour le manquant tools.jar , donc j'ai 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 maven, j'ai eu une erreur pour le bocal 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 FilesJavajre6libtools.jar -> [Help 1]

le problème est que Le tools.jar est dans " C:Program FilesJavajdk1.6.0_26lib "et est correctement positionné dans la variable d'environnement JAVA_HOME mais le maven regarde toujours dans le dossier jre comme dans le message d'erreur " C:Program FilesJavajre6libtools.jar ".

C:>echo %JAVA_HOME%
C:Program FilesJavajdk1.6.0_26

fait intéressant : quand j'ai mis le chemin complet dans la dépendance, il a fonctionné très bien. Mais je ne veux pas coder en dur.

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>C:Program FilesJavajdk1.6.0_26libtools.jar</systemPath>
</dependency>

quelqu'un Peut-il suggérer une solution dynamique pour cela?

23
demandé sur Garry 2012-11-08 16:03:29

7 réponses

c'est un bug dans le support Eclipse Maven. Eclipse ne supporte pas toutes les propriétés Maven globales selon les Maven specs .

selon les spécifications:

$ {java.home} spécifie le chemin vers L'environnement JRE_HOME actuel utilisation 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 qui a été utilisé pour lancer Eclipse , pas le build JRE.

pour corriger le problème, vous devez démarrer Eclipse en utilisant le JRE du JDK en ajoutant quelque chose comme ceci à eclipse.ini ( avant -vmargs !):

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
32
répondu rustyx 2015-02-10 15:16:54

vous ne devez jamais utiliser les dépendances de portée du système. Tout le code dans tools.jar sera déjà disponible via la JVM en cours d'exécution. Vous devriez supprimer complètement cette dépendance..

aussi pour vérifier ce que Maven utilise, appelez juste

mvn -v

si vous avez encore un problème de dépendance au pot d'outils, l'une des dépendances que vous avez ajoutées a cette dépendance (et c'est vraiment de mauvaise qualité). Pour savoir de laquelle il s' is run

mvn dependency:tree

ou si cela échoue, supprimez simplement une dépendance après l'autre jusqu'à ce que les problèmes aient disparu pour la commande ci-dessus.

Alors, quand vous savez d'où il vient, vous pouvez décider quoi faire ensuite. Un chemin serait d'utiliser une exclusion sur la dépendance qui attire les outils.

2
répondu Manfred Moser 2012-11-09 20:17:26

il semble que votre JAVA_HOME est réglé pour pointer vers le JRE dans eclipse.

1
répondu Maddy 2012-11-08 12:45:10

Maven ${java.accueil} la propriété est définie et prise à différents endroits en fonction de votre exécution Eclipse:

  • à partir de la valeur par défaut JRE sélectionné pour l'espace de travail

    Window>Preferences>Java>Installed JREs

  • de la projet Eclipse,

    Java Build Path>Libraries>JRE System Library

  • de la configuration D'exécution.

    Run Configurations> Spécifiques à Exécuter Configuration > JRE

Souvenez-vous de votre JRE à la maison des chemins de points pour un JDK ou JRE sous JDK

1
répondu Alejandro 2014-10-21 09:30:51

sonne comme si tu courais Maven dans Eclipse. Eclipse ne consulte pas JAVA_HOME.

assurez-vous que vous avez défini votre JRE dans les préférences Eclipse à votre JDK désiré.

0
répondu groodt 2012-11-08 12:34:05

lorsque vous ajoutez la variable D'environnement JAVA_HOME, s'il y a des espaces dans le chemin, vous devez envelopper le tout dans des guillemets.

0
répondu gordy 2013-02-05 00:08:08

vous pourriez utiliser la mauvaise installation Maven. Commutateur dans Fenêtre > Préférences > Maven > Installations. J'ai réglé le mien sur L'installation de Fedora Maven; le ramener à la version par défaut (la version intégrée dans m2e) a résolu le problème pour moi.

je pense que ce qui a causé ce problème est que L'installation Fedora Maven utilisait OpenJDK de Fedora, qui met probablement des outils.bocal dans un endroit bizarre (tout sur L'OpenJDK de Fedora est bizarre et non standard), donc Maven ne le trouve pas.

0
répondu Luke Hutchison 2017-01-19 23:46:26