Question Comment basculer entre Java 7 et Java 6 sur OS X 10.8.2?


J'utilise Java SE 7 pour programmer des jeux simples pour Windows et Mac, mais je dois passer à Java 6 pour exécuter des jeux tels que Minecraft sur mon ordinateur. Cela fonctionnait bien avant que je mette à jour vers Mac OS X 10.8.2 Build 12C60.

Avant cette mise à jour, je pouvais ouvrir les préférences Java et cocher Java 6 ou Java 7. Mais maintenant, je ne semble pas être en mesure de trouver les préférences Java.

J'utilise OS X 10.8.2 (dernière version).


82
2017-10-20 21:36


origine


Vous avez raison, les préférences Java sont maintenant supprimées avec la dernière mise à jour. Certaines méthodes de shell que j'ai essayées ne fonctionnent pas, mais il doit y avoir un mécanisme pour faciliter cela lorsque vous exécutez le 7 le plus récent. - ylluminate


Réponses:


Je ne pense pas qu'il soit possible de changer JRE (environnements d'exécution) voir ici:

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html

quels États:

Un seul JRE peut être installé. L'installation d'un JRE supprime le précédent   JRE installé. La version JRE utilisée par le système peut être déterminée   de l'une des deux manières suivantes:

Solution de contournement:

J'ai eu un problème similaire avec Minecraft avec Wuala. Où je devais exécuter Wuala en utilisant Java 1.6 alors que je devais développer avec JDK 1.7 et je l'ai géré en ouvrant le package Wuala.app et en changeant son script de démarrage dans:

/Applications/Wuala.app/Contents/MacOS/wuala

de:

exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*

à:

/usr/libexec/java_home -v 1.6.0 --exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*

Je remplace simplement: exec avec: /usr/libexec/java_home -v 1.6.0 --exec

Ceci est bien sûr plutôt compliqué et se brisera à chaque fois que wuala se mettra à jour, mais sinon cela fonctionne.

Pour utiliser un autre JDK, cliquez ici:

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

quels États:

Pour exécuter une version différente de Java, spécifiez le chemin d'accès complet ou utilisez l'outil java_home:        /usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Voici une illustration et des exemples de ma configuration:

Oracle JDK installe:

odin:~ geff$ ls -al /Library/Java/JavaVirtualMachines 
total 0
21058660 0 drwxr-xr-x  3 root  wheel  - 102 24 Oct 18:04:33 2012 jdk1.7.0_09.jdk/
21061692 0 drwxr-xr-x  3 root  wheel  - 102 24 Oct 18:06:08 2012 jdk1.7.0_07.jdk/
21042328 0 drwxrwxr-x  3 root  wheel  - 102 20 Apr 06:58:53 2012 1.7.0.jdk/
21031664 0 drwxrwxr-x  7 root  admin  - 238 24 Oct 18:04:16 2012 ../
21042327 0 drwxr-xr-x  5 root  wheel  - 170 24 Oct 18:06:13 2012 ./

Apple a fourni JDK:

odin:~ geff$ ls -al /System/Library/Java/JavaVirtualMachines 
total 0
21026468 0 drwxr-xr-x  3 root  wheel  - 102  1 Nov 17:49:02 2011 1.6.0.jdk/
21026436 0 drwxr-xr-x  6 root  wheel  - 204 24 Mar 23:04:06 2012 ../
21026467 0 drwxr-xr-x  3 root  wheel  - 102  1 Nov 17:49:02 2011 ./

Cela fonctionne pour moi aussi pour utiliser le 1.6 JDK fourni par Apple

odin:~ geff$ /usr/libexec/java_home -v 1.6.0_37 --exec java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

Choisissez entre les versions 1.7 Oracle:

Sélection du premier JDK Oracle 1.7.0_04

odin:~ geff$ /usr/libexec/java_home -v 1.7.0_04 --exec java -version
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)

Sélection du JDK 1.7.0_07

odin:~ geff$ /usr/libexec/java_home -v 1.7.0_07 --exec java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Le JDK par défaut est le plus élevé:

odin:~ geff$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

La valeur par défaut est la plus élevée lorsque vous utilisez uniquement le numéro de version mineure:

odin:~ geff$ /usr/libexec/java_home -v 1.7.0 --exec java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

41
2017-10-24 17:40





On peut utiliser le java_home mécanisme plus commodément.

Disons que vous avez Java 7 par défaut:

$ java -version
java version "1.7.0_15" 
…

Maintenant, activons Java 6:

$export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

Et voilà:

$ java -version
java version "1.6.0_41"
…

Je les ai ajoutés à mon .bashrc afin de rendre les choses encore plus pratiques:

alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

java_ls réduit la sortie de java_home -V uniquement les numéros de version. Et java_use est juste un raccourci pour ce que nous avons fait ci-dessus. Par exemple. java_use 1.6 passera à Java 6.


98
2018-02-22 12:26



dans java_use, vous devez supprimer le java précédent de $ PATH. - Eir Nym
@EirNym comment ferait-on ça? - Malcolm
quelque chose que j'ai trouvé utile pour supprimer java précédent de $ PATH stackoverflow.com/a/370192/1503859 - Nitin Mahesh
mettre à jour java_use qui a fonctionné pour moi: function java_use () {export JAVA_HOME = $ (/ usr / libexec / java_home -v $ 1) export PATH =echo $PATH | awk -v RS=: -v ORS=: '/Library\/Java\/JavaVirtualMachines/ {next} {print}'| sed 's/:$//'     export PATH = $ JAVA_HOME / bin: $ PATH java -version} - Nitin Mahesh


Une solution pour commuter facilement le JDK (pas sûr de JRE) (la source):

function setjdk() {  
  if [ $# -ne 0 ]; then  
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'  
   if [ -n "${JAVA_HOME+x}" ]; then  
    removeFromPath $JAVA_HOME  
   fi  
   export JAVA_HOME=`/usr/libexec/java_home -v $@`  
   export PATH=$JAVA_HOME/bin:$PATH  
  fi  
  echo JAVA_HOME set to $JAVA_HOME  
  java -version  
 }  
 function removeFromPath() {  
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")  
 }

(ajouter la fonction ci-dessus à votre .bash_profile)

Usage:

$ setjdk 1.7

35
2018-03-18 22:53





Une solution rapide consiste à créer un lien symbolique vers l'ancien fichier binaire Java 6:

sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java /usr/local/bin/java6

Ensuite, exécutez les applications avec: java6 -jar myapp.jar


7
2017-10-23 09:02





L'application de préférences Java ne semble plus lister Java 1.6. Cependant, lorsque je vérifie la version de Java dans la ligne de commande, j'obtiens:

java -version                                            
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

3
2017-10-21 14:58





Il est assez simple de changer instantanément de version Java sous OS X sans avoir à changer la variable $ JAVA_HOME.

J'exécute 10.8.2 et ma variable $ JAVA_HOME pointe vers / Library / Java / Home

echo $JAVA_HOME

Ce chemin est un lien symbolique, comme on peut le voir en exécutant la commande ls -l

ls -la /Library/Java

Le lien symbolique par défaut pointe vers

Accueil ->   /Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home/

Pour rediriger java vers mon installation 1.7, je remplace simplement l'ancien lien symbolique Home avec un nouveau lien symbolique pointant vers le répertoire personnel de mon installation Java 1.7.

cd /Library/Java
mv Home Home-1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ Home

Et le tour est joué! Java -version montre que je suis maintenant java 1.7. Il suffit de changer le lien symbolique actuellement nommé «Home» pour modifier instantanément le JRE Java par défaut.


3
2018-05-16 22:11





Voici un moyen facile de changer java 6 et java 7 sur mac osx.

étape 1: télécharger jdk 7 depuis le site officiel d'Oracle http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html  et installez-le pas à pas, suivez les conseils.

étape 2: définissez $ JAVA_HOME dans .bash_profile

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home)

$ source .bash_profile

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

étape 3: si vous souhaitez utiliser jdk 6, vous pouvez utiliser la solution $ JAVA_HOME to jdk 6 home path

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

$ source .bash_profile

$ echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

3
2017-11-12 10:15