web-dev-qa-db-fra.com

Mac OSX Java Version du terminal incorrecte

Ok, je suis un peu nouveau sur Mac et OSX, mais j’en ai choisi un pour pouvoir faire quelques dépannages sur mes Java avec un, car la société pour laquelle je travaille utilise une combinaison de Sous OSX et Windows, le problème est que, lorsque j'installe Java 7 sur le site Web d'Oracle, il met à jour le menu des préférences et semble exécuter correctement les fichiers .jar lorsque vous double-cliquez dessus. , mais la version de la fenêtre du terminal est toujours 1.6.0_43 et l’exécution du même fichier .jar à partir du terminal entraîne des erreurs d’exécution dues à l’ancienne version.

Lorsque je navigue dans/Bibliothèque/Java/JavaVirtualMachines/un dossier vide s’affiche. D'après ce que j'ai vu dans d'autres articles, c'est ici que devrait se trouver le dossier Java 1.7.0. Toute idée de ce qui se passe? Comment puis-je demander au terminal d'utiliser la bonne version de Java?

Edit: @DWilches commente sa réponse originale: (1)

total 64
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Mar 17 21:38 A
lrwxr-xr-x  1 root  wheel    1 Mar 17 21:38 Current -> A
lrwxr-xr-x  1 root  wheel   59 Mar 17 21:38 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

(2)

ls -ld /usr/bin/Java
lrwxr-xr-x  1 root  wheel  74 Mar 17 21:38 /usr/bin/Java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java

Edit: désolé pour l'erreur avec une nouvelle réponse, trop habitué aux sites qui bloquent la modification du message original après si longtemps ...

60
DGolberg

JDK

Sous Mac OS, /usr/bin/Java et amis sont des fiches qui délèguent aux véritables commandes JDK. Ces talons respectent le réglage de votre Java_HOME variable d’environnement, mais pour que cela fonctionne, vous devez installer le [~ # ~] jdk [~ # ~] (from http://www.Oracle.com/technetwork/Java/javase/downloads/index.html ) par opposition à [~ # ~] jre [~ # ~] (de http://Java.com ).

Le JDK s’installe dans /Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk (quelle que soit la valeur de NN), définissez donc votre Java_HOME variable d’environnement à /Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk/Contents/Home faire /usr/bin/Java utilisation 1.7. Vous pouvez revenir à 1.6 simplement en pointant votre Java_HOME à /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home au lieu. Vous pouvez utiliser le /usr/libexec/Java_home outil pour trouver automatiquement la bonne valeur, par exemple pour rendre /usr/bin/Java _ use Java 7 vous pouvez faire

export Java_HOME=`/usr/libexec/Java_home -v '1.7*'`

et pour le faire utiliser Java 6 vous pouvez faire

export Java_HOME=`/usr/libexec/Java_home -v '1.6*'`

Il en va de même pour Java 8 (en utilisant -v '1.8*'). Cela récupérera le dernier JDK installé pour la version majeure pertinente. Vous n'avez pas besoin de vous souvenir de changer le NN à la main lorsque vous installez une mise à jour.

JRE

Si vous voulez exécuter 1.7 ou 1.8 [~ # ~] jre [~ # ~] à partir de la ligne de commande, vous pouvez le trouver dans /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java. Ce chemin est fixe et vous ne pouvez installer qu’un seul JRE "public" à la fois.

$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java -version
Java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

Vous pouvez utiliser un alias Shell dans votre .bashrc

alias Java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java'
118
Ian Roberts

Le problème est que l'installation JRE d'Oracle ne modifie pas l'exécutable/usr/bin/Java. Si vous voulez utiliser ceci Java vous devez utiliser le chemin sous/Bibliothèque (vous devez trouver ce que c'est que j'ai installé JDK, cela pourrait donc être différent)

Selon le JRE d'Oracle document d'installation

L’installation d’un JRE à partir d’Oracle ne sera pas mise à jour Java - liens symboliques de version ou ajout Java à votre chemin. Pour que cela soit possible, vous devez installer le JDK. .

Le JDK Oracle modifie /usr/bin/Java Pour qu'il pointe vers l'exécutable Java 7. Si vous effectuez un développement, utilisez-le car il inclut plus que le JRE.

Oracle installer FAQ dit

Q: Dois-je installer le JRE ou le JDK?

R: Si vous envisagez d’exécuter les applications Java, installez le Java (JRE)). Le JRE est également appelé Oracle Java. Une fois que vous avez Pour installer le JRE, vous pouvez lancer Java des applets et des applications en double-cliquant sur les fichiers JAR, les fichiers JNLP et via le navigateur. Notez que les navigateurs 32 bits, tels que Firefox en mode 32 bits , et Chrome, ne sont pas pris en charge par JRE.

Si vous envisagez d'écrire des applications Java, installez le Java Kit de développement (JDK).

11
Mark

Tout d’abord, avez-vous quitté la console et l’ouvrez de nouveau afin qu’elle ait des chances de prendre en compte les modifications de la variable PATH?

Si vous l'avez déjà fait, vérifiez quelle est la version par défaut de votre Java est:

dwilches@ ~$ cd /System/Library/Frameworks/JavaVM.framework/Versions/
dwilches@ Versions$ ls -l
lrwxr-xr-x  1 root  wheel   59 Mar 19 10:07 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel    1 Mar 19 10:08 Current -> A
drwxr-xr-x  8 root  wheel  272 Mar 25 10:03 A

Maintenant, vous pouvez voir que la version "actuelle" est "A" (c'est mon Java7). Si je voudrais le changer en Java 1.6 alors je pourrais écrire:

dwilches@ Versions$ Sudo unlink Current
dwilches@ Versions$ Sudo ln -s 1.6 Current

Et alors:

dwilches@ Versions$ Java -version
Java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)

Vous pouvez donc l'utiliser pour faire en sorte que "Actuel" pointe sur l'emplacement souhaité Java.

5
MondKin