Come posso installare OpenJDK Java 11 su Mac OSX consentendo il cambio di versione?


Voglio installare OpenJDK Java 11 su Mac OSX e farlo funzionare insieme ad altri JDK poiché è una versione più recente. Attualmente, ho scaricato il tar.gz e l'ho messo nel mio percorso, ma è difficile da mantenere.

Le uniche altre installazioni che ho trovato che fanno più cose automaticamente sono l'installazione Oracle tramite Homebrew cask, ma questo è il JDK commerciale e voglio quello open-source!

brew cask info java

Mostra:

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

Quale è l'Oracolo JDK e non OpenJDK, vedi: https://discourse.brew.sh/t/how-to-install-openjdk-with-brew/712

Seguendo le indicazioni di una domanda precedente ( Mac OS X e più versioni Java ) è obsoleto e mi dà la versione sbagliata Oracle Oracle non OpenJDK.

Nota: questa domanda è intenzionalmente scritta e risolta da l'autore ( Ha risposto alle domande ), in modo che le risposte idiomatiche agli argomenti più comuni siano presenti in SO.

Author: Jayson Minard, 2018-09-26

3 answers

Nota: Queste soluzioni funzionano per il tuo caso specifico di Java 11 OpenJDK ma funzionano anche per qualsiasi altra versione Java precedente coperta dai gestori di versione elencati. Questo include JDK alternativi da OpenJDK, Oracle, IBM, Azul, Graal e altro ancora. Lavora facilmente con Java 7, Java 8, Java 9, Java 10 e ora 11.

Hai alcune opzioni su come eseguire l'installazione e gestire la commutazione. L'installazione può essere eseguita da Homebew, SDKMAN , Jabba , o un'installazione manuale. La commutazione può essere eseguita da JEnv, SDKMAN, o Jabba.


Installazione

In primo luogo, installare Java utilizzando qualsiasi metodo si preferisce tra cui Homebrew, SDKMAN o un'installazione manuale del tar.file gz. I vantaggi di un'installazione manuale è che la posizione del JDK può essere collocato in una posizione standardizzata per Mac OSX.

Installazione con SDKMAN

Questo è un modello semplice in quanto gestisce sia l'installazione che il cambio di versione, con un avvertimento che installa il JDK in una directory non standard.

Vedi sotto "Installazione e commutazione di versioni con SDKMAN">

Installa usando Jabba

Questo è anche un modello semplice in quanto sia l'installazione che il cambio di versione sono gestiti dallo stesso strumento. Le installazioni vengono effettuate in una directory non standard.

Vedi sotto " Installazione e commutazione di versioni con Jabba">

Installa manualmente dalla pagina di download di OpenJDK:

  1. Scarica OpenJDK 11 per Mac OSX da http://jdk.java.net/11/

  2. Annullare l'archiviazione di OpenJDK tar e posizionare la cartella jdk-11.jdk risultante nella cartella /Library/Java/JavaVirtualMachines/ poiché questa è la posizione standard e prevista delle installazioni JDK. È inoltre possibile installare ovunque si desidera nella realtà.

Installare con Homebrew

Non ancora disponibile per OpenJDK 11, in arrivo! da ADOTTAREOPENJDK>

Per altre versioni di Java:

  1. Installa Homebrew se non l'hai già fatto.

  2. Aggiungere il rubinetto delle botti:

    brew tap homebrew/cask-versions
    
  3. Cerca le versioni installabili:

    brew search java
    
  4. Controlla i dettagli sulla versione che verrà installata:

    brew cask info java
    

    Si noti che la versione corrente è la versione commerciale di Oracle di Java 11 e non APRITEGDK 11.

  5. Installa una versione specifica di JDK come java8, java10 oppure java per la corrente:

    brew cask install java
    

E questi verranno installati in /Library/Java/JavaVirtualMachines/ che è la posizione tradizionale prevista su Mac OSX.

Altre opzioni di installazione:

È anche possibile installare Azul SystemsJava Zulu certified build di OpenJDK seguendo le istruzioni sul loro sito.

Zulu® è un build certificata di OpenJDK che è pienamente compatibile con lo standard Java SE. Zulu è 100% open source e liberamente scaricabile. Ora gli sviluppatori Java, gli amministratori di sistema e gli utenti finali possono godere di tutti i vantaggi di Java open source con flessibilità di distribuzione e controllo sui tempi di aggiornamento.


Dov'è il mio JDK?!?!

Per trovare le posizioni di Java JDK installate in precedenza nelle posizioni di sistema predefinite, utilizzare:

/usr/libexec/java_home -V

Questo è utile quando utilizzando strumenti come JEnv, o aggiungendo un'installazione locale a SDKMAN, o collegando un sistema JDK in Jabba -- e devi sapere dove trovarli.

Se hai bisogno di trovare i JDK installati da altri strumenti, controlla queste posizioni:

  • SDKMAN installa su ~/.sdkman/candidates/java/
  • Jabba installa su ~/.jabba/jdk

Commutazione delle versioni con JEnv

JEnv si aspetta che i JDK Java esistano già sulla macchina e possano trovarsi in qualsiasi posizione. Tipicamente troverai Java JDK installato in /Library/Java/JavaVirtualMachines/. JEnv consente di impostare la versione globale di Java, una per la shell corrente e una versione locale per directory che è utile quando alcuni progetti richiedono versioni diverse rispetto ad altri.

  1. Installa JEnv se non l'hai già fatto, istruzioni sul sito http://www.jenv.be / per l'installazione manuale o l'utilizzo di Homebrew.

  2. Aggiungi qualsiasi versione Java a JEnv (regola la directory se hai inserito questo altrove):

    jenv add /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    
  3. Imposta la tua versione globale usando questo comando:

    jenv global 11
    

È anche possibile aggiungere altre versioni esistenti utilizzando jenv add in modo simile ed elencare quelle disponibili. Ad esempio Java 8:

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

Vedere ilJenv docs per ulteriori comandi. È ora possibile passare da qualsiasi versione Java (Oracle, OpenJDK, altro) in qualsiasi momento sia per l'intero sistema, per le shell, o per directory locale.

Per aiutare gestire JAVA_HOMEdurante l'utilizzo di JEnv è possibile aggiungere il plugin di esportazione per fare questo per voi.

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

Il plugin di esportazione potrebbe non regolare JAVA_HOME se è già impostato, quindi potrebbe essere necessario cancellare questa variabile nel proprio profilo in modo che possa essere gestita da JEnv.

Puoi anche usare jenv exec <command> <parms...> per eseguire singoli comandi con JAVA_HOME e PATH impostati correttamente per quel comando, che potrebbe includere l'apertura di un'altra shell.


Installazione e commutazione di versioni con SDKMAN

SDKMAN è un po ' diverso e gestisce sia l'installazione che la commutazione. SDKMAN inserisce anche i JDK installati nel proprio albero di directory, che in genere è ~/.sdkman/candidates/java. SDKMAN consente di impostare una versione predefinita globale e una versione specifica della shell corrente.

  1. Installazione di SDKMAN da https://sdkman.io/install

  2. Installa Java 11 usando SDKMAN:

    sdk install java 11.0.0-open 
    
  3. Rende 11 il valore predefinito versione:

    sdk default java 11.0.0-open
    

    O passare a 11 per la sessione:

    sdk use java 11.0.0-open
    

È possibile elencare le versioni disponibili per l'installazione utilizzando il comando list:

sdk list java

E installare versioni aggiuntive, come JDK 8:

sdk install java 8.0.181-oracle

SDKMAN può funzionare con versioni esistenti installate in precedenza. Basta fare un'installazione locale dando la propria etichetta di versione e la posizione del JDK:

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

E usarlo liberamente:

sdk use java my-local-11

Ulteriori informazioni sono disponibili in il SDKMAN Guida all'uso insieme a altri SDK può installare e gestire.

SDKMAN gestirà automaticamente le tue PATH e JAVA_HOME per te mentre cambi le versioni.

Installazione e commutazione delle versioni con Jabba

Jabba gestisce anche sia l'installazione che la commutazione. Jabba inserisce anche i JDK installati nel proprio albero di directory, che in genere è ~/.jabba/jdk.

  1. Installa Jabba seguendo le istruzioni sulla home page .

  2. Elenco disponibile di JDK

    jabba ls-remote
    
  3. Installazione di Java JDK 11

    jabba install [email protected]
    
  4. Usalo:

    jabba use [email protected]
    

Puoi anche alias nomi di versione, link a JDK esistenti già installati e trovare un mix di JDK interessanti come GraalVM, Adopt JDK, IBM JDK e altro ancora. La guida completa all'uso è disponibile anche nella home page.

Jabba verrà automaticamente gestisci le tue PATH e JAVA_HOME per te mentre cambi le versioni.

 12
Author: Jayson Minard, 2018-09-29 06:43:57

Un'altra alternativa è usare SDKMAN! Vedi https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/

Prima installazione di SDKMAN: https://sdkman.io/install e poi...

  1. Installa Oracle JDK 8 con: sdk install java 8.0.181-oracle
  2. Installa OpenJDK 11 con: sdk install java 11.0.0-open

Per cambiare:

  • Passa a JDK 8 con sdk use java 8.0.181-oracle
  • Passa a JDK 11 con sdk use java 11.0.0-open

Per impostare un predefinito:

  • Predefinito su JDK 8 con sdk default java 8.0.181-oracle
  • Predefinito su JDK 11 con sdk default java 11.0.0-open
 0
Author: Wim Deblauwe, 2018-09-26 19:36:05

IMHO, non è necessario installare tutte le applicazioni/pacchetti aggiuntivi.

Controlla le versioni disponibili usando il comando:

> /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

Ora se vuoi scegliere Azul JDK 8 nell'elenco sopra, e NON Java SE 8 di Oracle, invoca il comando come di seguito:

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

Per scegliere Java SE 8 di Oracle si invoca il comando:

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

Come puoi vedere il numero di versione fornito deve essere l'insieme univoco di stringhe: 1.8.0_181 vs 1.8.0_151

 0
Author: Ranganath Samudrala, 2018-10-05 11:53:22