web-dev-qa-db-fra.com

Mac OS X et plusieurs versions de Java

Comment puis-je installer un Java supplémentaire sur MacOS? J'ai installé jdk8 et cela fonctionne bien. mais maintenant, j’ai besoin d’une installation jdk7 à des fins de développement. En essayant d'installer l'ancienne version via un fichier DMG, je reçois un avertissement indiquant qu'une version plus récente de Java est déjà installée et que le programme d'installation se ferme. 

/usr/libexec/Java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

   /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

Comment installer jdk7 en plus de celui-ci?

Merci
Dakky

221
Dakkar

Le moyen le plus propre de gérer plusieurs versions de Java sur Mac consiste à utiliser Homebrew .

Et dans Homebrew, utilisez:

  • homebrew-cask pour installer les versions de Java
  • jenv pour gérer les versions installées de Java

Comme indiqué sur http://hanxue-it.blogspot.ch/2014/05/installing-Java-8-managing-multiple.html , voici les étapes à suivre.

  1. installer homebrew
  2. installer homebrew jenv
  3. installez homebrew-fût
  4. installer une version Java spécifique à l'aide de cask (voir le paragraphe "Versions de homebrew-cask" ci-dessous)
  5. ajouter cette version pour que jenv le gère
  6. vérifier que la version est correctement gérée par jenv
  7. répétez les étapes 4 à 6 pour chaque version de Java dont vous avez besoin

versions de homebrew-cask

Ajoutez le homebrew/cask-versions tap à l’homebrew en utilisant:

brew tap homebrew/cask-versions

Ensuite, vous pouvez regarder toutes les versions disponibles:

brew search Java

Ensuite, vous pouvez installer la ou les versions que vous préférez:

brew cask install Java7
brew cask install Java6

Et ajoutez-les pour qu'ils soient gérés par jenv comme d'habitude.

jenv add <javaVersionPathHere>

Je pense que c'est le moyen le plus simple et le plus simple de s'y prendre.


Une autre chose importante à noter, comme indiqué dans Mac OS X 10.6.7 Java Path actuel JDK déroutant :

Pour différents types de JDK ou d'installations, vous aurez différents les chemins

Vous pouvez vérifier les chemins des versions installées à l'aide de /usr/libexec/Java_home -V, voir Comment puis-je vérifier si le JDK Java est installé sur Mac?

Sur Mac OS X Mavericks, j'ai constaté que:

1) JRE intégré par défaut: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) JDK téléchargés chez Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) JDK téléchargés à partir d'Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


Ressources

356
Adrien Be

Désinstallez jdk8, installez jdk7, puis réinstallez jdk8.

Mon approche pour basculer entre eux (dans .profile):

export Java_7_HOME=$(/usr/libexec/Java_home -v1.7)
export Java_8_HOME=$(/usr/libexec/Java_home -v1.8)
export Java_9_HOME=$(/usr/libexec/Java_home -v9)

alias Java7='export Java_HOME=$Java_7_HOME'
alias Java8='export Java_HOME=$Java_8_HOME'
alias Java9='export Java_HOME=$Java_9_HOME'

#default Java8
export Java_HOME=$Java_8_HOME

Ensuite, vous pouvez simplement taper Java7 ou Java8 dans un terminal pour changer de version.

(edit: mis à jour pour ajouter l'amélioration Dylans pour Java 9)

227
Vegard

SDKMAN! est un excellent outil pour utiliser plusieurs versions de Java, Gradle, Groovy, Kotlin et d’autres outils JVM sous Mac OS. La documentation d'installation et d'utilisation se trouve clairement sur le site principal.

(Je n'ai aucune affiliation, juste un utilisateur heureux).

À titre d'exemple, si je tape ce qui suit dans une fenêtre de terminal, il existe une liste des versions de SDK Java disponibles (modifiées par souci de concision):

$ sdk list Java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

Ici, + indique que la version est installée. > indique quelle version est actuellement utilisée. Pour installer une version:

$ sdk install Java 7u141-zulu

Pour utiliser une version dans cette fenêtre de terminal:

$ sdk use Java 9ea170
32
Michael Easter

Comme indiqué sur le site Web Alors commençons par installer jEnv

  1. Exécuter ceci dans le terminal

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
    
  2. Ajouter jEnv au profil bash

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
  3. Lors de la première installation, aucun fichier JDK n’est associé à jEnv.

    Par exemple, je viens d'installer JDK 8 mais jEnv ne le sait pas. Pour vérifier les versions de Java sur jEnv

    Pour l'instant, il ne trouve que la version Java (jre) sur le système. Le * indique la version actuellement sélectionnée. Contrairement à rvm et à rbenv, jEnv ne peut pas installer JDK pour vous. Vous devez installer JDK manuellement à partir du site Web Oracle.

  4. Installez JDK 6 à partir du site Web Apple. Cela installera Java dans /System/Library/Java/JavaVirtualMachines/. La raison pour laquelle nous installons Java 6 à partir du site Web d'Apple est que Sun n'a pas mis au point JDK 6 pour MAC. Apple a donc créé/modifié sa propre version de déploiement.

  5. De même, installez JDK7 et JDK8.

  6. Ajoutez des JDK à jEnv.

    JDK 6:

    JDK 7:  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8:  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. Vérifiez les versions de Java installées à l'aide de jenv

     http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. Nous avons donc maintenant 3 versions de Java sur notre système. Pour définir une version par défaut, utilisez la commande

    jenv local <jenv version>
    

    Ex - Je voulais que Jdk 1.6 lance IntelliJ

    jenv local Oracle64-1.6.0.65
    
  9. vérifier la version Java

    Java -version  http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

C'est tout. Nous avons maintenant plusieurs versions de Java et nous pouvons basculer facilement entre elles. jEnv possède également d'autres fonctionnalités, telles que des wrappers pour Gradle, Ant, Maven, etc., et la possibilité de définir les options de la machine virtuelle Java globalement ou localement. Consultez la documentation pour plus d'informations.

7
Dinesh Arora

Je trouve ce gestionnaire de versions Java appelé Jabba récemment et son utilisation est très similaire aux gestionnaires de versions d’autres langages tels que rvm (Ruby), nvm (nœud), pyenv (python), etc. peut être utilisé sur Mac. 

Après l’installation, il créera un répertoire dans ~/.jabba pour mettre toutes les versions de Java que vous installez. Il "Prend en charge l’installation d’Oracle JDK (par défaut)/Serveur JRE, Zulu OpenJDK (depuis la version 0.3.0), IBM SDK, Java Technology Edition (depuis la version 0.6.0) et à partir d’URL personnalisées.". 

L'utilisation de base est indiquée sur leur Github. Un résumé rapide pour commencer: 

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8
5
York Yang

J'utilise Mac OS X 10.9.5. C’est ainsi que je gère plusieurs JDK/JRE sur ma machine lorsque j’ai besoin d’une version pour exécuter l’application A et d’utiliser une autre version pour l’application B.

J'ai créé le script suivant après avoir obtenu de l'aide en ligne.

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${Java_HOME+x}" ]; then
    removeFromPath $Java_HOME
   fi
   export Java_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$Java_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

Je mets le script ci-dessus dans le fichier .profile. Ouvrez simplement le terminal, tapez vi .profile, ajoutez le script avec l’extrait ci-dessus et enregistrez-le. Une fois que vous avez tapé source .profile, votre script de profil sera exécuté sans que vous ayez à redémarrer le terminal. Maintenant, tapez Java -version, la version actuelle devrait être 1.7. Si vous avez l'intention de le changer en 1.8, commentez la ligne setjdk jdk1.7.0_15.jdk et décommentez la ligne setjdk jdk1.8.0_60.jdk. Enregistrez le script et réexécutez-le avec la commande source. J'utilise ce mécanisme pour gérer plusieurs versions de JDK/JRE lorsque je dois compiler 2 projets Maven différents nécessitant différentes versions de Java.

4
ChaitanyaBhatt

Jenv sur Mac Sierra:

si cela ne fonctionne pas après l'installation, faites ce correctif pour ajouter l'exécutable Java au chemin

export PATH="$HOME/.jenv/shims:$PATH"

même si eval "$(jenv init -)" pouvait faire ce travail. La raison en est que le dossier/bin n’est plus présent comme décrit dans sa page d’accueil, mais le dossier shim est utilisé comme/bin.

  • Assurez-vous que ~/.jenv est là
  • which Java peut imprimer/Library/...
  • jenv global 1.8
  • jenv Shell 1.8

which Java vous donne finalement:

/Users/xxxx/.jenv/shims/Java

3
CodeFarmer

Voici une version plus DRY pour bash (Basé sur la réponse de Vegard)

Remplacez 1.7 et 1.8 par les versions qui vous intéressent .__ et vous obtiendrez un alias appelé 'javaX'; où 'X' est la version Java (7/8 dans l'extrait ci-dessous) qui vous permettra de changer facilement de version

for version in 1.7 1.8; do
    v="${version: -1}"
    h=Java_"$v"_HOME

    export "$h"=$(/usr/libexec/Java_home -v $version)

    alias "Java$v"="export Java_HOME=\$$h"
done
0
elad.chen