Come installare Java 8 su Mac

Voglio fare qualche programmazione con l’ultimo JavaFX, che richiede Java 8. Sto usando IntelliJ 13 CE e Mac OS X 9 Mavericks. Ho eseguito il programma di installazione di Oracle 8 su Java e sembra che i file siano finiti a

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk 

ma le versioni precedenti sono a

 /System/Library/Java/JavaFrameworks/jdk1.6.... 

Non sono sicuro del motivo per cui l’ultimo programma di installazione lo inserisce in /Library posto di /System/Library (né quale sia la differenza). Ma /usr/libexec/java_home non trova 1.8, quindi tutti i post che ho trovato su come impostare la tua versione java corrente non funzionano. Ho provato ad aggiungere un collegamento simbolico per renderlo simile a 1.8 nel percorso /System/Library... , ma non aiuta. /usr/libexec/java_home -V elenca ancora solo il vecchio java 1.6.

Ironia della sorte, il pannello di controllo “Java” in Preferenze di sistema mostra solo java 1.8!

Perché l’installer di Oracle non lo mette dove va veramente? E come posso aggirare questo problema?

Non fare affidamento su Oracle per installare Java correttamente sul tuo Mac.

Usa l’ Homebrew . questo installerà l’ultimo jdk:

 brew cask install java 

Se vuoi gestire più versioni di Java sul tuo Mac, considera l’utilizzo di jenv .

AGGIORNAMENTO: Ora che Java 8 non è più la versione più recente, se vuoi che java 8 lo installi in questo modo:

 brew tap caskroom/versions brew cask install java8 

Per ottenere un elenco di tutte le versioni precedenti di java: brew tap caskroom/versions e poi brew cask search java

Utilizziamo brew cask poiché altrimenti utilizzeremmo il programma di installazione di Oracle GUI che probabilmente non installerà Java correttamente sul tuo Mac. (Usa brew cask install APP per installare le app GUI, usa brew install APP .) Java non è un’app GUI; Non dovrebbe richiedere “botte”, ma almeno Oracle è coerente.

Per El Capitan , Sierra e High Sierra

Prima installa e aggiorna brew da Terminal:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew tap caskroom/versions brew update 

Java 8:

 brew cask install java8 

Ultima Java:

 brew cask install java 

L’ho appena fatto sul mio MBP e ho dovuto usarlo

 $ brew tap caskroom/versions $ brew cask install java8 

per poter installare java8.

Un’opzione che sto iniziando a piacere davvero per l’esecuzione di applicazioni sul mio computer locale è l’uso di Docker. Puoi semplicemente eseguire la tua applicazione all’interno del contenitore JDK ufficiale, il che significa che non devi preoccuparti di avere tutto configurato sulla tua macchina locale (o preoccuparti di eseguire più versioni differenti di JDK per diverse app, ecc.)

Anche se questo potrebbe non essere d’aiuto con i tuoi attuali problemi di installazione, è una soluzione che ti consente di superare i campi minati di problemi relativi al tentativo di far funzionare Java correttamente sulla tua macchina dev!

I benefici sono:

  1. Non è necessario configurare alcuna versione di Java sul computer locale (eseguirai semplicemente Java all’interno di un contenitore estratto da Docker Hub)
  2. Molto facile passare a diverse versioni di Java semplicemente cambiando il tag sul contenitore.
  3. Le dipendenze del progetto sono installate all’interno del contenitore, quindi se fai confusione con la configurazione puoi semplicemente eseguire il nuke del contenitore e ricominciare.

Un esempio molto semplice:

Creare un file Dockerfile :

 FROM java:8 COPY . /usr/src/myapp WORKDIR /usr/src/myapp 
  • Qui stiamo specificando il contenitore Java che esegue la versione 8 dell’SDK ( java:8 – per utilizzare Java 7, è sufficiente specificare: java:7 )
  • Stiamo mappando la directory locale con la directory: /usr/src/myapp all’interno del contenitore

Creare un file docker-compose.yml :

 version: "2" services: java: build: . volumes: - .:/usr/src/myapp 

Ora, supponiamo di avere questo file Java:

HelloWorld.java

 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } 

Quindi abbiamo la seguente struttura di file:

 . |_ Dockerfile |_ docker-compose.yml |_ HelloWorld.java 

Puoi fare varie cose Java come:

compilare:

 docker-compose run --rm java javac HelloWorld.java 
  • Dovresti notare che HelloWorld.class si presenta nella tua directory corrente (questo perché abbiamo mappato la directory corrente alla posizione all’interno del contenitore in cui esiste il nostro codice

correre:

 docker-compose run --rm java java HelloWorld 
  • Nota: la prima volta che lo esegui, verrà recuperata l’immagine, ecc. Questo richiederà un po ‘di tempo – accade solo la prima volta
  • docker-compose run – esegue un comando dal contenitore
  • -rm dice a -rm di rimuovere il contenitore una volta che il comando è finito in esecuzione
  • java è il nome del servizio / contenitore (dal nostro file di composizione-docker) sul quale verrà eseguito questo comando
  • il resto della linea è il comando da eseguire all’interno del contenitore.

Questo è un modo piuttosto interessante di gestire diverse versioni di Java per diverse app senza creare un disastro completo della configurazione locale :).

Ecco un esempio un po ‘più complesso che include Maven e una semplice app di Spring

Disclaimer:

  • Non l’ho mai provato all’interno di un IDE come IntelliJ, quindi non sono del tutto sicuro di come funzionerebbe questo aspetto delle cose. Anche se sembra che arrivi il supporto docker
  • Ecco un esempio significativamente più complesso che esegue Microservices con Spring Boot, Zuul e Docker

Sto avendo lo stesso problema da risolvere, perché ho bisogno di installare JDK8 per eseguire Android SDK Manager (perché sembra che non funzionano bene con JDK9). Comunque, ti dico come risolvo tutti i problemi su un Mac (Sierra).

In primo luogo, hai bisogno di birra con botte e jenv .

  1. Puoi trovare una guida utile qui, Homebrew Cask Installation Guide . Ricordarsi di toccare ‘caskroom / versions’ in esecuzione nel terminale: brew tap caskroom/versions
  2. Successivamente, installa jenv con: brew install jenv
  3. Installa qualsiasi versione desiderata con cask brew cask install java8 (o java7 o java se vuoi installare l’ultima versione, jdk9)
  4. L’ultimo passaggio consiste nel configurare quale versione eseguire (e lasciare che jenv gestisca le tue JAVA_HOME) jenv versions per elencare tutte le versioni installate sulla tua macchina e quindi triggersre quella che desideri con jenv global [JDK_NAME_OF_LIST]

Puoi trovare altre informazioni utili qui su Github Gist brew-java-and-jenv.md , su questo blog Installa più JDK su un Mac e su Jenv Website

Ho applicazioni che usano sia Java 7 che 8 e devono andare avanti e indietro tutto il tempo.

Uso questo script scritto da Johan:

http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

Ora puoi impostarlo all’avvio o chiamare lo script in seguito.
Installa JDK per Mac.

Java 7

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Java 8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

brew cask install caskroom / versions / java8

Se sul tuo computer hai diverse versioni Java e vuoi sceglierle dynamicmente in fase di runtime, cioè, nel mio caso, ho due versioni:

 ls -la /Library/Java/JavaVirtualMachines drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/ drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/ 

Puoi cambiarli modificando il contenuto di /etc/profile . Basta aggiungere (o modificare) le seguenti due righe alla fine del file:

 export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home export PATH=$JAVA_HOME/bin:$PATH 

Nel mio caso, dovrebbe essere simile al seguente se voglio usare:

Java 7:

 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH 

Java 8:

 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH 

Dopo aver salvato il file, eseguire source /etc/profile e dovrebbe funzionare. Ecco i risultati quando utilizzo la prima e la seconda opzione di conseguenza:

Java 7:

 java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) 

Java 8:

 java -version java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) 

Il processo è simile se la tua cartella java si trova in luoghi diversi.

Usando brew

 brew install Caskroom/cask/java 

Il modo più semplice –

 1) brew cask install java (No need to install cask separately it comes with brew) 2) java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) 

PS – Cos’è il brew-cask? Homebrew-Cask estende Homebrew e risolve il problema di eseguire un comando extra: “Per installare, trascina questa icona …” dopo aver installato un’applicazione usando Homebrew .

Il modo migliore è usare il gestore pacchetti Brew ma il comando

  brew cask install java8 

fallisce con errore:

 Error: No available formula with the name "java8" 

Quindi usa

 brew cask install caskroom/versions/java8 

Come ho trovato “caskroom / versions / java8”: usando il comando brew search:

 brew cask search java8 

JavaVirtualMachines cartella JavaVirtualMachines è ora corretta

Perché l’installer di Oracle non lo mette dove va veramente? E come posso aggirare questo problema?

Non è un problema.

La cartella /Library/Java/JavaVirtualMachines/ è la nuova casa per JVM s su macOS .

Per installare una JVM, utilizzare un programma di installazione, discusso di seguito.

Per disinstallare, usa semplicemente il Finder per eliminare una JVM da quella cartella. Ti verrà richiesta la password dell’amministratore di sistema per completare la rimozione.


Java 9 e 10 e 11

Nel 2010, Apple ha aderito al progetto OpenJDK , insieme a Oracle , IBM , Red Hat , Azul e altri fornitori Java. Ogni membro contribuisce con codice sorgente, test e feedback alla base di codici OpenJDK unificata.

Apple ha contribuito con la maggior parte del suo codice specifico per Mac per la sua JVM. Ora Apple non rilascia più la sua JVM specifica per Mac. Ora hai la tua scelta di fornitore JVM, con build provenienti dalla base di codici OpenJDK.

Troverete il codice sorgente all’indirizzo: http://openjdk.java.net

Essere consapevoli del fatto che nel 2017 Oracle, JCP e OpenJDK hanno adottato un nuovo piano di “rilascio del treno” rapido per la distribuzione di versioni pianificate di Java in modo prevedibile.

Leggi questo post sul blog di Azul Systems 2018-07 per molti dettagli, Eliminando la confusione degli aggiornamenti Java di Simon Ritter .

I venditori

Per un elenco piuttosto esaustivo delle implementazioni JVM passate e presenti, vedere questa pagina su Wikipedia .

Qui ci sono tre fonti attualmente attive che conosco.

Oracle JVM

Oracle fornisce programmi di installazione JDK e JRE per più piattaforms incluso macOS.

Il loro nuovo piano aziendale consiste nel fornire un’implementazione a marchio Oracle di Java a pagamento in produzione e senza alcun costo per l’utilizzo in sviluppo / testing / demo. Il supporto per le versioni precedenti richiede un programma di supporto a pagamento. Hanno dichiarato la loro intenzione per la loro versione con marchio di essere a parità di funzionalità con la versione OpenJDK. Hanno persino donato i loro add-on commerciali come Flight Recorder al progetto OpenJDK.

Zulu e Zing di Azul

Azul Systems offre una varietà di prodotti JVM.

  • La loro linea Zulu si basa direttamente su OpenJDK ed è disponibile gratuitamente con piani di supporto a pagamento facoltativi.
  • La loro linea Zing offre prodotti JVM commerciali arricchiti con implementazioni tecniche alternative come un garbage collector specializzato.

Entrambe le loro linee offrono programmi di installazione per macOS.

Attualmente utilizzo Zulu per Java 10.0.1 su macOS High Sierra con IntelliJ 2018.2 e Vaadin 8 . Ho scaricato da questa pagina . A proposito, non trovo alcun elemento relativo a Java installato nell’app delle preferenze di sistema di Apple.

AdoptOpenJDK.net

AdoptOpenJDK è uno sforzo guidato dalla comunità per build i binari del sorgente OpenJDK. Attualmente disponibile solo per Java 8, costruito per utilizzare il motore HotSpot o OpenJ9.

OpenJ9 di Eclipse

Un altro fornitore in futuro potrebbe essere il progetto OpenJ9 . Ora sponsorizzato dalla Fondazione Eclipse, con tecnologia e supporto donati da IBM nel 2017. Non posso discernere se intendono distribuire per macOS o meno.


Come installare

Gli installatori forniti da Oracle o da Azul sono entrambi estremamente semplici da utilizzare. Basta eseguire l’app di installazione sul tuo Mac. Viene visualizzata una finestra per indicare lo stato di avanzamento dell’installazione.

Al termine, verificare l’installazione di JVM tramite:

  • Visitare la cartella /Library/Java/JavaVirtualMachines/ per vedere un elemento per la nuova JVM.
  • Esecuzione di una console come Terminal.app e digitare java -version per vedere il marchio e il numero di versione della JVM.

Dopo aver verificato il successo, smonta l’immagine .dmg nel Finder. Quindi elimina il file .dmg scaricato.

È più semplice scaricare il file dmg dal seguente sito e installarlo con un doppio clic

 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 

cercare le JVM disponibili dalla home directory

 ls -al /Library/Java/JavaVirtualMachines 

e aggiorna il file .bash_profile con la versione pertinente

 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home export PATH=$JAVA_HOME/bin:$PATH 

e infine

 source .bash_profile 

I passaggi successivi hanno funzionato per me.

1) Disinstalla tutti i jdks

Nella finestra del terminale, copia e incolla il comando seguente:

 sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane 

2) Installa jdk APPLE.

https://support.apple.com/kb/DL1572?locale=en_US

3) Scarica l’ultimo JDK da Oracle e installalo, per me era JDK 1,82

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

Questo è tutto ciò che funzionerà come un fascino.

Ho anche avuto lo stesso problema. Ma dopo poco successo e processo, sono stato in grado di risolvere il problema.

Prova a rimuovere 1.6 sdk da sudo rm e riavvia il tuo Mac.

Scarica nuovamente il file .dmg. Probabilmente il programma di installazione .dmg scaricato potrebbe essere corrotto. Installa di nuovo.

Esegui il seguente comando dopo l’installazione. Fornisce il percorso per jdk 8. / usr / libexec / java_home -v 1.8

Inoltre è ansible eseguire e vedere la cartella jdk 8. I file potrebbero essere nascosti. ls -al / Libreria / Java / JavaVirtualMachines /