web-dev-qa-db-fra.com

Après l'installation de JDK Java 7 pour Mac OS X - la version mvn indique toujours la version 1.6.0_31

Oracle a publié Java JDK 7 le 26 avril pour Mac OS X. J'ai suivi les instructions d'installation et lorsque je fais la version Java dans une fenêtre de terminal, je reçois:

Java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

Cependant, lorsque je fais mvn -version dans la fenêtre du terminal, je reçois:

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", Arch: "x86_64", family: "mac"

Comment puis-je amener Maven à utiliser le JDK Java 1.7.0_04?

Merci pour l'aide.

116
Bruce Phillips

Enfin trouvé la réponse ici:

http://www.adam-bien.com/roller/abien/entry/Java_se_development_kit_7

Vous devez utiliser Java_HOME=$(/usr/libexec/Java_home) à la place sur un Mac, puis définir le jdk actuel via "Java Preferences.app".

Définir Java_HOME dans ~/.profile

125
Bruce Phillips

Le problème est que le lien symbolique "CurrentJDK" dans les versions de JavaVm.framework pointe vers l'ancien jdk. Ainsi, lorsque j'ai utilisé les commandes suivantes pour définir le CurrentJDK sur la dernière (1.7.0_45), cela fonctionne

cd /System/Library/Frameworks/JavaVM.framework/Versions
Sudo rm CurrentJDK
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

référence: http://Java.dzone.com/articles/installing-jdk-7-mac-os-x

34
Mahmoud Adam

Pour trouver le chemin à partir des préférences Java, essayez /usr/libexec/Java_home -X

Mon entrée Java7 ressemble à ceci:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.Oracle.Java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>
17
dmolony

Vous devez remplacer la variable d'environnement Java_HOME par le nouvel emplacement JDK 1.7.

Regardez cette question pour les emplacements possibles où Java_HOME pourrait être défini. Dans un terminal, saisissez which Java pour rechercher le chemin de votre installation Java, puis mettez à jour Java_HOME pour qu'il pointe vers ce chemin (en excluant le dossier de dossier final).

9
Nate

Au cas où quelqu'un installerait Maven sur un Mac 64 bits fonctionnant sous Mac OSX, les «Mavericks» vous feront gagner du temps et vous essaieront d'essayer de faire installer Maven. J'essayais de suivre ceci (ce qui a échoué car l'emplacement de Java_home a changé sur Mavericks:

http://maven.Apache.org/download.cgi

Je me tirais les cheveux jusqu'à trouver ce site Web, qui vous recommande d'installer homebrew et de suivre les instructions qui s'affichent sur cette page: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on -mac-osx-109.html

une fois terminé, ne paniquez pas lorsque $ maven -version ne fonctionne pas, utilisez plutôt $ mvn --version comme maven.Apache.org/download.cgi recommandé. 

Cela a fonctionné, mais j'ai ensuite remarqué que le SDK Java utilisé par Maven était la version Java: 1.6.0_65, qui n'est pas le dernier SDK installé sur le système.

Une fois que j'ai défini Java_HOME = /usr/libexec/Java_home

Il utilisait le bon SDK: Maven home: /usr/local/Cellar/maven/3.1.1/libexecJava version: 1.7.0_45, fournisseur: Oracle CorporationJava home:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Sommaire/Home/jre Paramètres régionaux par défaut: en_US, codage de la plate-forme: UTF-8 Nom du système d'exploitation: "mac os x", version: "10.9", Arch: "x86_64", famille: "mac"

Succès! Mais attendez .... la prochaine fois que j’ai ouvert le terminal et lancé MVN -v, il est revenu à Java version 1.6. WTH!

c'est une sorte de supposé bogue de ce que j'ai lu, utilisez: echo Java_HOME = /usr/libexec/Java_home -v 1.7 | Sudo tee -a/etc/mavenrc

et maintenant:

Accueil Maven: /usr/local/Cellar/maven/3.1.1/libexecJava version: 1.7.0_45, fournisseur: Oracle CorporationJava home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk /Contents/Home/jreLocale par défaut: en_US, codage de la plate-forme: UTF-8 Nom du système d'exploitation: "mac os x", version: "10.9", Arch: "x86_64", famille: "mac".

7
ConfusedDeer

Maven utilise toujours Java 6 parce que le script/usr/bin/mvn qui le lance n’utilise pas la méthode OS/X appropriée pour résoudre la version Java actuelle spécifiée dans les préférences Java. Voir ce numéro de Maven pour plus de détails:

http://jira.codehaus.org/browse/MNG-4226

Le voter pourrait le faire réparer; entre-temps, si vous modifiez le script/usr/bin/mvn comme indiqué dans les commentaires et le correctif relatifs à ce problème, vous obtiendrez le résultat souhaité.

4
Robert Elliot

Ok sur ma machine Oui, le programme d’installation d’Oracle n’a pas fait exactement son travail et il m’a rendu complètement confus après le lancement de la version 1.6.

Java run time was updated 

Java -version
Java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

mais le SDK HOME est en fait un lien sim toujours pointant vers 1,6

/Library/Java/Home dans le Finder GetInfo pointe sur /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

dans le terminal 

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

Allez comprendre.

J'ai trouvé 1,7 ici et je l'utilise pour construire avec: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

2
dave

Je pense que le problème réside en partie avec le mécanisme de lancement de Java. J'ai pu obtenir qu'Eclipse exécute mon code sous Java7, mais je pense qu'Eclipse lui-même fonctionne toujours sous Java6. En outre, j'ai un programme Java compilé pour la dernière fois il y a un an et construit à l'aide de jarbundler-2.1.0.jar (avec l'option jvmversion = "1.6+"). Lorsque je double-clique sur le fichier .app, il exécute Java6, mais lorsque je double-clique sur le fichier .jar dans .app, il exécute Java7.

De plus, je n'utilise pas Java_HOME, mais j'obtiens toujours la version Java correcte "1.7.0_04" indiquée dans la question. Java_HOME semble être un fouillis rouge. Peut-être que Maven en a besoin, mais Eclipse ne semble pas l’utiliser, pas plus que le lancement de fichiers jar.

Et après avoir défini Java7 dans l'outil Préférences Java, cela ne semble pas avoir d'incidence sur le lancement de fichiers Java .app. Cependant, cela fait bien fonctionner la "version Java" du terminal. J'ai essayé de décocher tout sauf l'option Java7, puis Eclipse ne fonctionnerait plus du tout. 

0
dmolony

Si votre Java_HOME est situé sur le bash de l'utilisateur local, mvn choisira la version Java actuelle du système, peu importe ce que Java_HOME vous avez défini.

Par conséquent, commencez par exécuter la commande ' which mvn ' et vérifiez quel mvn exécutable est utilisé. Après cela éditez ce fichier mvn et changez la variable Java_HOME en votre répertoire Java préféré.

0
Ankit Bhatnagar