J'ai récemment mis en place une machine OSX et j'ai du mal à faire en sorte que Maven récupère Java_HOME lors de l'exécution dans Eclipse.
J'ai déjà fait les choses suivantes:
export Java_HOME=$(/usr/libexec/Java_home)
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java
/etc/mavenrc
avec echo Java_HOME=\
/usr/libexec/Java_home -v 1.7` | Sudo tee -a/etc/mavenrc`Depuis l'interface de ligne de commande, tout semble conforme aux attentes. Java -version
imprime:
Java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
echo $Java_HOME
imprime:
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
mvn -v
imprime:
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /usr/local/Cellar/maven/3.1.1/libexec
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9", Arch: "x86_64", family: "mac"
Exécuter mvn install
dans un projet à partir de la CLI fonctionne également. Cependant, il en va de même pour Eclipse:
Failed to execute goal org.Apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project suppress-warnings: MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable Java_HOME is not correctly set.
Dans Eclipse > Preferences > Java > Installed JREs
, je vois que JDK 7 avec le même emplacement que celui spécifié dans Java_HOME
est défini par défaut et également utilisé pour mon projet. La commutation entre le runtime Maven intégré et l'installation externe donne les mêmes résultats.
Où ou comment dois-je définir Java_HOME
pour qu'un processus Maven démarré à partir d'Eclipse obtienne le bon emplacement Java_HOME
?
Le problème est que sous Mac OSX, les variables d’environnement définies dans .bashrc
ou .bash_profile
ne sont exportées que dans des environnements de terminaux. Une application graphique intégrée, telle qu'Eclipse, ne les voit pas et, par conséquent, aucune configuration d'exécution exécutée à partir d'Eclipse.
La solution consiste à créer (s'il n'existe pas) ou à éditer un fichier /etc/launchd.conf
et d'y ajouter la ligne suivante:
setenv Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
Bien sûr, modifié pour votre valeur Java_HOME
réelle. (notez que l'astuce couramment utilisée dans .bash_profile
avec $(/usr/libexec/Java_home)
ne fonctionne pas dans launchd.conf
- ou du moins, je ne pouvais pas le faire fonctionner)
Après cela, vous devrez redémarrer la machine. Après le redémarrage, les configurations d'exécution M2E Maven pourront voir la variable Java_HOME
et s'exécuter correctement.
Cela ne fonctionne plus dans YOSEMITE pour les applications graphiques! Comme Eclipse, ou tout ce qui a commencé avec Spotlight. (.bash_profile, launchd.conf ne fonctionne que pour les sessions de terminal.) Avant de démarrer Eclipse, ouvrez simplement une fenêtre de terminal et donnez la commande suivante:
launchctl setenv Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
(Avec votre chemin d'installation! Peut-être fonctionne-t-il avec $ (/ usr/libexec/Java_home) au lieu du chemin complet également.)
Consultez l'excellent article sur la solution permanente ici: La définition de variables d'environnement via launchd.conf ne fonctionne plus sous OS X Yosemite?
Je ne peux pas commenter Jeen Broekstra répond parce que je suis un novice :-(
Sa solution est bonne, il ne reste plus qu’à être améliorée.
Dans /etc/launchd.conf
il suffit de mettre l'instruction
getenv Java_HOME
Puis, dans /etc/bashrc
export Java_HOME=`/usr/libexec/Java_home`
Ensuite, reconnectez-vous (il n'est pas nécessaire de redémarrer ;-) et Eclipse fonctionne comme prévu w.r.t. Maven.
Eclipse vous permet de spécifier des variables d'environnement de lancement. Faites-le là.
Cette solution a fonctionné le mieux pour moi:
Voir plus de détails dans ce blog .
Dans Eclipse, vérifiez que le JRE de Maven est sélectionné correctement dans un JDK.
Le JRE (Java Runtime) Maven Runner doit spécifier un JDK (pas un JRE) , car la commande javadoc n’est pas incluse dans le JRE. Par conséquent, Use Internal JRE
ne fonctionne pas avec maven attach-javadocs.
Dans votre répertoire personnel: (/ Users/{nom d'utilisateur})
nano .bash_profile et ajoutez la ligne ci-dessous:
exportation
Java_HOME =/Bibliothèque/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contenu/Accueil`
Assurez-vous que le chemin "/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home"exist.
Recherchez le maven-javadoc-plugin artifactId dans le fichier pom.xml imprimant l'erreur et ajoutez le fichier Java.home en tant que configuration javadocExecutable:
<plugin>
...
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
</configuration>
...
</plugin>
Raison: utiliser la valeur 'Java.home' propre à l'application est la meilleure approche, car elle supprime la dépendance vis-à-vis du jeu de variables locales des systèmes d'exploitation qui peut ou non différer dans un autre conteneur.
J'ai rencontré le même problème. J'ai essayé la solution de Robert et Jeen, mais pour une raison quelconque, elle n'a pas fonctionné. Une solution très simple qui a fonctionné pour moi a été d'ajouter Java_HOME en tant que variable d'environnement dans Eclipse. Dans la configuration maven du projet Eclipse, ajoutez Java_HOME dans la liste des variables d'environnement.
Un moyen simple de résoudre ce problème, ajoutez la configuration suivante à pom.xml
<javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
code complet:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<show>private</show>
<nohelp>true</nohelp>
<aggregate>true</aggregate>
<charset>UTF-8</charset>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<javadocExecutable>${Java.home}/../bin/javadoc</javadocExecutable>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>javadoc</goal>
</goals>
</execution>
</executions>
</plugin>
Vous recherchez probablement ~/.MacOSX/environment.plist
Ajoutez une nouvelle ligne à environment.plist pour définir votre Java_HOME préféré, par exemple.
Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home
les envvars définis ici seront "vus" par des applications incluant Eclipse