web-dev-qa-db-fra.com

Basculement entre Java 7 et 8 sous OS X

J'ai installé Java-8. Maintenant, je voulais revenir à Java-7 par défaut, donc je saisis ...

/usr/libexec/Java_home -v 1.7.0_40 --exec Java -version
/usr/libexec/Java_home -v 1.7.0_40 --exec javac -version

Mais je vois encore ...

Java -version
Java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

Cela fonctionne ...

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

Mais je voudrais une solution plus permanente.

Quelqu'un voit ce que je fais mal?

25
Jackie

Changez facilement de version

  1. Installez les versions 1.6, 1.7, 1.8 dans n'importe quel ordre. Note: Je crois que le dernier installé détermine lequel sera utilisé pour les plugins de navigateur, je ne me soucierai pas de changer ceux ci-dessous.

  2. Ensuite, ajoutez à votre ~/.bashrc ou ~/.bash_profile, ou où que ce soit:

    #!/bin/bash
    export Java_HOME=$(/usr/libexec/Java_home -v 1.7)
    
    setjdk() {
       export Java_HOME=$(/usr/libexec/Java_home -v $1)
    }
    
  3. Vérifier la modification via Java -version

    $ Java -version
    Java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ 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)
    
    $ setjdk 1.8
    $ Java -version
    Java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

De toute évidence, le changement ne concerne que la durée du shell. Mais vous pouvez voir où vous pouvez le configurer globalement maintenant.

50
nkadwa

Vous pouvez utiliser jEnv ( http://www.jenv.be/ ), qui est "un outil en ligne de commande pour vous aider à oublier la définition de la Variable d’environnement Java_HOME permettant de basculer entre les différentes versions du JDK "(extrait de la page d’accueil du projet).

Si vous connaissez Ruby, JEnv est comme utiliser RVM ou rbenv. Il vous aide à gérer plusieurs JDK différents installés sur votre machine sans avoir à écrire votre propre script pour passer d'un JDK à un autre. Vous pouvez modifier la version actuelle de Java en vous basant par exemple sur le répertoire actuel ou sur un fichier de configuration.

9
Pietro Di Bello

Vous ne pouvez pas basculer entre les versions Java. Dans la documentation , vous voyez:

Un seul JRE peut être installé à la fois. Le système n'installe pas de JRE dont la version est inférieure à la version actuelle. Si vous souhaitez installer une version inférieure de JRE, commencez par désinstaller la version actuelle.

Si vous souhaitez revenir à une version plus ancienne, vous devez désinstaller Java 8.

4
Christian Wörz

Je veux compléter la réponse de @ nkadwa. Sa suggestion a fonctionné, mais seulement après avoir également changé le lien symbolique pour CurrentSDK. Alors voici le code modifié:

setjdk() {
    export Java_HOME=$(/usr/libexec/Java_home -v $1)
    Sudo ln -nsf ${Java_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
0
imdahmd