web-dev-qa-db-fra.com

Comment revenir à Java 1.6 sur Mac OS X 10.7.5

J'ai l'installateur 1.6. Je l'ai utilisé. Cela ne modifie pas mon installation Java, ni ne dit qu'il existe une version plus ancienne, mais termine l'installation.

Je travaille un peu avec les liens symboliques, mais peu importe ce que je fais, je lance 

Java -version

dans le terminal entraîne toujours 

Daves-MacBook-Pro:core-server dave$ 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)

Mon application fonctionne avec GAE, qui n'utilise absolument pas Java 1.7. En tant que tel, je ne peux pas compiler mon code avec 1.7! Je dois utiliser la version 1.6, mais je n'ai pas réussi à trouver un moyen de supprimer la version 1.7 ou de forcer la génération/la compilation à se produire sur la version 1.6. 

Une note finale, je suis en train d'exécuter un outil de construction sur la ligne de commande, donc changer les paramètres du projet dans Eclipse ne semble pas que cela va aider. 

24
Davek804

Les outils de ligne de commande Java, javac, etc. sont sensibles à la valeur de la variable d'environnement Java_HOME et utiliseront 1.6 si cette variable pointe vers un JDK 1.6. L'outil /usr/libexec/Java_home est votre ami ici. Fonctionnement

/usr/libexec/Java_home

imprimera la valeur Java_HOME appropriée pour le JDK le plus récent de votre système. Ce sera Java 7, mais vous pouvez appliquer des contraintes à l'aide de l'indicateur -v, par exemple

/usr/libexec/Java_home -v '1.6*'

retournera une valeur Java_HOME pour le meilleur disponible 1.6 JDK sur votre système. Vous pouvez utiliser cette valeur pour définir Java_HOME:

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

soit de manière unique pour une session de terminal particulière, soit de manière permanente pour toutes les sessions de terminal futures en ajoutant la ligne ci-dessus au fichier .bash_profile de votre répertoire de base.


$ export Java_HOME=`/usr/libexec/Java_home -v '1.6*'`
$ 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)
$ export Java_HOME=`/usr/libexec/Java_home -v '1.7*'`

$ 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)
69
Ian Roberts

Si vous devez écrire le code que vous souhaitez exécuter sur une version antérieure de Java, vous pouvez modifier les indicateurs de compilation. C'est peut-être tout ce dont vous avez besoin et 

par exemple.

javac -source 1.6 -target 1.6 MyClass.Java

L'argument source indique que la source est écrite dans cette version de Java, donc List<String> strings = new ArrayList<>(); serait une erreur de compilation. Target indique au compilateur de compiler du code octet destiné à la version spécifiée de la machine virtuelle Java. Bien que je pense que 1.7 est totalement compatible avec les versions antérieures 1.5 et 1.6.

1
Dunes

J'ai rencontré un problème similaire. Après avoir installé JDK7, certaines de mes applications ne fonctionnaient plus. Je devais revenir à JDK6 et je l’ai fait différemment. J'ai remarqué que dans /System/Library/Frameworks/JavaVM.framework/Versions/:

lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Oct 25 18:06 A
lrwxr-xr-x  1 root  wheel    1 Oct 25 17:01 Current -> A
lrwxr-xr-x  1 root  wheel   59 Nov 20 21:40 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/

alors j'ai supprimé le lien symbolique CurrentJDK

 Sudo rm CurrentJDK

et recréé le lien symbolique pointant vers JDK6, qui est toujours sur mon Mac

Sudo ln -s  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ CurrentJDK

et qui a fait le tour pour moi

Java -version
   Java version "1.6.0_65"
   Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
   Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
0
binhn