Comment installer OpenJDK Java 11 sur Mac OSX permettant la commutation de version?

Je veux installer OpenJDK Java 11 sur Mac OSX et le faire fonctionner avec D'autres JDK car il s'agit d'une nouvelle version. Actuellement, j'ai téléchargé le goudron.gz et l'a placé sur mon chemin, mais qui est difficile à maintenir.

les seules autres installations que j'ai trouvé qui font plus de choses automatiquement sont L'installation D'Oracle via Homebrew cask, mais c'est le JDK commercial et je veux l'open-source un!

brew cask info java

Affiche:

java: 11,28: 55eed80b163941c8885ad9298e6d786a https://www.oracle.com/technetwork/java/javase/overview/index.html

qui est L'Oracle JDK et non OpenJDK, voir: https://discourse.brew.sh/t/how-to-install-openjdk-with-brew/712

suivre les directives d'une question plus ancienne (Mac OS X et plusieurs versions Java) est périmé et me donne la mauvaise version -- Oracle pas OpenJDK.

Remarque: cette question est intentionnellement écrite et l'auteur y répond ( Questions Auxquelles On Répond Par Soi-Même), de sorte que les réponses idiomatiques aux sujets couramment demandés sont présents dans SO.

10
demandé sur Jayson Minard 2018-09-26 21:32:30

3 réponses

remarque:ces solutions fonctionnent pour votre cas spécifique de Java 11 OpenJDK mais aussi pour toute autre version Java antérieure couverte par les gestionnaires de version listés. Cela inclut les JDK alternatifs D'OpenJDK, Oracle, IBM, Azul, Graal et plus. Travail facile avec Java 7, Java 8, Java 9, Java 10, et maintenant 11.

vous avez quelques options pour effectuer l'installation et gérer la commutation. L'Installation peut être effectuée par Homebew, SDKMAN,Jabba, ou une installation manuelle. Commutation peut être effectuée par JEnv, SDKMAN, ou Jabba.


Installation

tout d'abord, installez Java en utilisant la méthode que vous préférez, y compris Homebrew, SDKMAN ou une installation manuelle du tar.fichier gz. Les avantages d'une installation manuelle, c'est que l'emplacement du JDK peut être placé dans un emplacement normalisé pour Mac OSX.

Install with SDKMAN

il s'agit d'un modèle simple en ce qu'il gère à la fois l'installation et la commutation de version, avec une mise en garde qu'il installe le JDK dans un répertoire non standard.

< voir ci-dessous"installation et commutation de versions avec SDKMAN">

Installer à l'aide de Jabba

c'est aussi un modèle simple en ce sens que la commutation d'installation et de version est gérée par le même outil. Installation sont faites dans un répertoire non standard.

< voir ci-dessous"installation et commutation de versions avec Jabba">

installer manuellement à partir de la page de téléchargement D'OpenJDK:

  1. télécharger OpenJDK 11 Pour Mac OSX à partir dehttp://jdk.java.net/11/

  2. Réactivation de l'OpenJDK goudron, et de la place de la résultante jdk-11.jdk dossier dans votre /Library/Java/JavaVirtualMachines/ dossier puisqu'il s'agit de l'emplacement standard et prévu de JDK installe. Vous pouvez également installer où vous voulez dans la réalité.

Installer avec Homebrew

<pas encore disponible pour OpenJDK 11, bientôt!AdoptOpenJdk>

pour les autres versions de Java:

  1. installer Homebrew si vous ne l'avez pas déjà.

  2. Ajouter les fûts appuyez sur:

    brew tap homebrew/cask-versions
    
  3. rechercher les versions installables:

    brew search java
    
  4. Vérifier les détails sur la version qui sera installée:

    brew cask info java
    

    notez que la version actuelle est la version commerciale D'Oracle de Java 11, et non OpenJDK 11.

  5. installez une version spécifique du JDK telle que java8,java10 ou java pour les courant:

    brew cask install java
    

Et ceux-ci seront installés dans /Library/Java/JavaVirtualMachines/ qui est l'emplacement traditionnel attendu sur Mac OSX.

autres options d'installation:

vous pouvez aussi installer Systèmes Azul Java Zoulou certifié construit de OpenJDK en suivant le instructions sur leur site.

Zulu® est une construction certifiée D'OpenJDK qui est entièrement conforme à la norme Java SE. Zulu est 100% open source et librement téléchargeable. Maintenant, les développeurs Java, les administrateurs système et les utilisateurs finaux peuvent profiter de tous les avantages de Java open source avec une flexibilité de déploiement et un contrôle sur le calendrier de mise à niveau.


Où est mon JDK?!?!

pour trouver des localisations de Java JDK déjà installées aux localisations du système par défaut, utilisez:

/usr/libexec/java_home -V

ceci est utile lors de L'utilisation D'outils comme JEnv, ou l'ajout d'un installer sur SDKMAN, ou relier un système JDK dans Jabba -- et vous devez savoir où les trouver.

si vous avez besoin de trouver JDK installé par d'autres outils, vérifiez ces emplacements:

  • SDKMAN installe~/.sdkman/candidates/java/
  • Jabba installe à ~/.jabba/jdk

passage d'une version avec JEnv

JEnv s'attend à ce que les JDK Java existent déjà sur la machine et peuvent être dans n'importe quel endroit. Typiquement, vous trouverez Java JDK installé dans /Library/Java/JavaVirtualMachines/. JEnv permet de définir la version globale de Java, une pour le shell actuel, et une version locale par répertoire qui est pratique lorsque certains projets nécessitent des versions différentes que d'autres.

  1. Install JEnv if you have not already, instructions on the site http://www.jenv.be/ pour l'installation manuelle ou l'utilisation de la tire.

  2. ajouter N'importe quelle version Java à JEnv (ajuster le répertoire si vous avez placé ailleurs):

    jenv add /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    
  3. Définissez votre version globale en utilisant cette commande:

    jenv global 11
    

vous pouvez également ajouter d'autres versions existantes en utilisant jenv add d'une manière similaire, et énumérer ceux qui sont disponibles. Par exemple Java 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

voir le JEnv docs pour plus de commandes. Vous pouvez maintenant basculer entre toutes les versions Java (Oracle, OpenJDK, d'autres) à tout moment, soit pour l'ensemble du système, des coquillages, ou par répertoire local.

pour aider à gérer JAVA_HOME en utilisant JEnv vous pouvez ajouter le Exporter plugin de faire cela pour vous.

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

le plugin d'exportation ne peut pas ajuster JAVA_HOME si elle est déjà définie, vous devrez peut-être effacer cette variable dans votre profil pour qu'elle puisse être gérée par JEnv.

vous pouvez aussi utiliser jenv exec <command> <parms...> pour exécuter des commandes uniques avec JAVA_HOME et PATH défini correctement pour cette commande, qui pourrait inclure l'ouverture d'un autre shell.


installation et commutation de versions avec SDKMAN

SDKMAN c'est un peu différent et gère à la fois l'installation et la commutation. SDKMAN place également les JDK installés dans son propre répertoire, qui est typiquement ~/.sdkman/candidates/java. SDKMAN permet de définir une version par défaut globale, et une version spécifique à la Shell.

  1. Installer SDKMAN de https://sdkman.io/install

  2. Install Java 11 using SDKMAN:

    sdk install java 11.0.0-open 
    
  3. Faire 11 la version par défaut:

    sdk default java 11.0.0-open
    

    Ou passer à 11 pour la session:

    sdk use java 11.0.0-open
    

vous pouvez lister les versions disponibles pour l'installation en utilisant la commande list:

sdk list java

et installer des versions supplémentaires, comme JDK 8:

sdk install java 8.0.181-oracle

SDKMAN peut travailler avec des versions déjà installées. Il suffit de faire une installation locale en donnant votre propre étiquette de version et l'emplacement du JDK:

sdk install java my-local-11 /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home

Et l'utiliser librement:

sdk use java my-local-11

Plus d'informations sont disponibles dans le guide D'utilisation de SDKMAN et autres SDK il peut installer et à gérer.

SDKMAN gérera automatiquement votre PATH et JAVA_HOME pour vous aussi vous changer de version.

installation et commutation de versions avec Jabba

Jabba gère également l'installer et de la commutation. Jabba place également les JDK installés dans son propre arborescence de répertoires, qui est typiquement ~/.jabba/jdk.

  1. installez Jabba en suivant le instructions sur la page d'accueil.

  2. Liste disponible JDK's

    jabba ls-remote
    
  3. Install Java JDK 11

    jabba install openjdk@1.11.0
    
  4. Utilisation:

    jabba use openjdk@1.11.0
    

vous pouvez également alias les noms de version, Lien vers JDK déjà installé, et trouver un mélange de JDK intéressants tels que GraalVM, Adopt JDK, IBM JDK, et plus encore. La complète guide d'utilisation est disponible sur la page d'accueil.

Jabba gérera automatiquement votre PATH et JAVA_HOME pour vous que vous changer de version.

12
répondu Jayson Minard 2018-09-29 06:43:57

une Autre alternative est d'utiliser SDKMAN! Voir https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/

tout d'Abord installer SDKMAN: https://sdkman.io/install et puis...

  1. Installer Oracle JDK 8 avec: sdk install java 8.0.181-oracle
  2. Install OpenJDK 11 with:sdk install java 11.0.0-open

switch:

  • passer à JDK 8 avec sdk use java 8.0.181-oracle
  • passez à JDK 11 avec sdk use java 11.0.0-open

Pour définir une valeur par défaut:

  • par défaut à JDK 8 avec sdk default java 8.0.181-oracle
  • par défaut à JDK 11 avec sdk default java 11.0.0-open
0
répondu Wim Deblauwe 2018-09-26 19:36:05

IMHO, il n'est pas nécessaire d'installer toutes les applications/paquets supplémentaires.

vérifiez les versions disponibles en utilisant la commande:

> /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
    11, x86_64: "Java SE 11-ea" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_181-zulu-8.31.0.1, x86_64:    "Zulu 8"    /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
    1.8.0_151, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

maintenant, si vous voulez choisir Azul JDK 8 dans la liste ci-dessus, et non Java SE 8 D'Oracle, invoquez la commande comme ci-dessous:

> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

pour choisir le Java SE 8 D'Oracle, vous devez invoquer la commande:

> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

comme vous pouvez le voir le numéro de version fourni doit être l'ensemble unique de chaînes: 1.8.0_181 vs 1.8.0_151

0
répondu Ranganath Samudrala 2018-10-05 11:53:22