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

117

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

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 le fais mvn -versiondans la fenêtre du terminal, j'obtiens:

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 faire en sorte que Maven utilise le Java JDK 1.7.0_04?

Merci pour l'aide.

Bruce Phillips
la source

Réponses:

126

Enfin trouvé la réponse ici:

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

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

Définissez JAVA_HOME dans ~ / .profile

Bruce Phillips
la source
4
J'ai récemment installé Java 6 et je ne suis pas en mesure de localiser JavaPreferences.app bcz mac ne fournit plus de support pour Java. Je peux maintenant me dire comment définir mon jvm sans utiliser JavaPreferences.
amod
2
Vous pouvez accepter votre propre réponse. Cela montrera à nous tous que cela a résolu ce problème. Et vous aurez 10 autres ponts :)
Ibolit
5
J'ai ajouté à ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren
1
Ou vous pouvez faire "exporter JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" en une seule fois au lieu de changer en utilisant Java Preferences.app
mac
incapable d'ouvrir l'application Préférences Java dans El Captian, je suis passé des Préférences Système -> Java.
Wolf7176
34

Le problème est que le lien symbolique "CurrentJDK" dans les versions de JavaVm.framework pointe vers l'ancien jdk, donc quand j'ai utilisé les commandes suivantes pour définir le CurrentJDK sur le dernier (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

Mahmoud Adam
la source
assurez-vous de spécifier la bonne version pour jdk1.7.0_45.jdk, la mienne étaitjdk1.7.0_51.jdk
ndequeker
1
Je me demande pourquoi les développeurs Oracle ne l'ont pas fait automatiquement? Ce n'est pas anodin pour moi. Cette réponse a sauvé ma journée.
Ivan Voroshilin
cela ne fonctionne pas pour moi. Je suis sur el captian. la version java mvn refuse de changer. JAVA_HOME est précis
Wolf7176
17

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>
dmolony
la source
6
grrrrr, je l'ai fait et le chemin qu'il répertorie pour mon jdk1.7 n'existe pas du tout :(
Dean Hiller
9

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

Regardez cette question pour les emplacements possibles où JAVA_HOME pourrait être défini. Dans un terminal, tapez which javapour rechercher le chemin de votre installation Java, puis mettez JAVA_HOMEà jour pour pointer vers ce chemin (mais excluez le dossier bin final).

Nate
la source
Êtes-vous sûr que j'en ai besoin sur un Mac OS X? Je n'ai pas eu à faire ça dans le passé. Si j'ai besoin de définir JAVA_HOME, comment savoir quel chemin utiliser car l'installation de Java JDK 7 ne m'a donné aucune information sur le chemin d'installation et l'application de l'utilitaire de préférence Java sur Mac n'affiche pas de chemin vers le JDK 1.7
Bruce Phillips
Si vous regardez votre question ci-dessus, vous pouvez voir que JAVA_HOME a déjà été défini et pointe actuellement vers l'ancien 1.6 JDK. Je ne sais pas comment modifier les variables d'environnement dans OSX, mais c'est ce que Maven utilise par défaut.
Nate
Le problème est qu'une mise à jour Apple met normalement à jour la version java et définit la valeur JAVA_HOME. La définition de la valeur JAVA_HOME dans .bashrc ne fonctionne pas sur OS X comme elle le fait sous Linux. De plus, aucun endroit où puis-je trouver le chemin d'accès au JDK 7 installé par Oracle.
Bruce Phillips
De plus, ma question Nate n'est PAS un double du message auquel vous avez lié. Je suis sous OS X et j'ai mis à jour vers Java JDK 7 à l'aide de l'installation d'Oracle pour Mac OS X, qui vient de sortir le 26 avril.
Bruce Phillips
Aucun Mac au lieu de .bashrc n'utilise .bash_profile et vous devriez pouvoir trouver l'installation sous / System / Library / Java / JavaVirtualMachines / où vous devez pointer sur votre nouvelle version 1.7.0 Java
peter_budo
7

Au cas où quelqu'un installerait Maven sur un Mac 64 bits exécutant Mac OSX «Mavericks», économisez du temps et des cheveux en essayant d'installer Maven. J'essayais de suivre ceci (qui a échoué car l'emplacement du java_home a changé sur Mavericks:

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

Je tirais mes cheveux jusqu'à ce que je trouve ce site Web, qui vous recommande d'installer homebrew et de suivre les instructions 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 recommandé par maven.apache.org/download.cgi.

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

Une fois que j'ai défini le JAVA_HOME =/usr/libexec/java_home

Il utilisait le bon SDK: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Java version: 1.7.0_45, fournisseur: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Contents / Home / jre Paramètres régionaux par défaut: en_US, encodage de 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 à la version 1.6 de Java. WTH!

c'est une sorte de bogue supposé d'après ce que j'ai lu: 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/libexec Version Java: 1.7.0_45, fournisseur: Oracle Corporation Accueil Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Paramètres régionaux par défaut: en_US, encodage de la plateforme: UTF-8 Nom du système d'exploitation: "mac os x", version: "10.9", arch: "x86_64", famille: "mac"

Cerf confus
la source
export JAVA_HOME=`/usr/libexec/java_home`a bien fonctionné pour moi d'exporter correctement la var JAVA_HOME.
cdeszaq
4

La raison pour laquelle Maven utilise toujours Java 6 est que le script / usr / bin / mvn qui le lance n'utilise pas la méthode OS / X correcte pour résoudre la version actuelle de Java comme spécifié dans les Préférences Java. Consultez ce numéro de Maven pour plus de détails:

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

Le voter pourrait le réparer; en attendant, si vous modifiez le script / usr / bin / mvn comme indiqué dans les commentaires et le correctif sur ce problème, vous obtiendrez le résultat souhaité.

Robert Elliot
la source
2

Ok sur ma machine. Oui, le programme d'installation d'Oracle n'a pas fait exactement son travail, et il m'a complètement dérouté après que 1.6 soit toujours en cours d'exécution.

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 pointant toujours vers 1.6

/Library/Java/Home dans le Finder, GetInfo pointe vers /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

Dave
la source
0

Je pense que le problème réside en partie dans le mécanisme de lancement de java. J'ai pu obtenir Eclipse pour exécuter mon code sous Java7, mais je pense qu'Eclipse lui-même fonctionne toujours sous Java6. De plus, j'ai un programme java qui a été compilé pour la dernière fois il y a un an, et construit avec 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 le .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 hareng 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 affecter le lancement des fichiers java .app. Cependant, cela permet à «java -version» du terminal de fonctionner correctement. J'ai essayé de décocher tout sauf l'option Java7, puis Eclipse ne fonctionnait pas du tout.

dmolony
la source
0

Si votre JAVA_HOME est situé au bash de l'utilisateur local, mvn choisira la version java actuelle du système, quel que soit le JAVA_HOME que vous avez défini.

Par conséquent, lancez d'abord la commande ' which mvn ' et vérifiez quel exécutable mvn vous utilisez. Après cela, modifiez ce fichier mvn et remplacez la variable JAVA_HOME par votre home java préféré.

Ankit Bhatnagar
la source