Java >> Java tutorial >  >> Tag >> switch

Hvordan installerer jeg Java på Mac OSX og tillader versionsskift?

Bemærk: Disse løsninger virker til forskellige versioner af Java, inklusive Java 8, Java 11 og den nye Java 15, og for enhver anden tidligere Java-version, der er dækket af de angivne versionsadministratorer. Dette inkluderer alternative JDK'er fra OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal og flere. Arbejd nemt med Java 7, Java 8, Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 og Java 15!

Du har et par muligheder for, hvordan du udfører installationen samt administrerer JDK-switch. Installation kan udføres af Homebrew, SDKMAN, Jabba eller en manuel installation. Skift kan udføres af JEnv, SDKMAN, Jabba eller manuelt ved at indstille JAVA_HOME . Alle disse er beskrevet nedenfor.

Installation

Først skal du installere Java ved at bruge den metode, du foretrækker, inklusive Homebrew, SDKMAN eller en manuel installation af tar.gz-filen. Fordelen ved en manuel installation er, at placeringen af ​​JDK kan placeres på en standardiseret placering til Mac OSX. Ellers er der lettere muligheder såsom SDKMAN, der også vil installere andre vigtige og almindelige værktøjer til JVM.

Installation og skift af versioner med SDKMAN

SDKMAN er lidt anderledes og klarer både installationen og omskiftningen. SDKMAN placerer også de installerede JDK'er i sit eget mappetræ, som typisk er ~/.sdkman/candidates/java . SDKMAN tillader indstilling af en global standardversion og en version, der er specifik for den aktuelle shell.

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

  2. List de tilgængelige Java-versioner for at sikre, at du kender versions-id'et

    sdk list java
    
  3. Installer en af ​​disse versioner, for eksempel Java 15:

    sdk install java 15-open 
    
  4. Gør 15 til standardversionen:

    sdk default java 15-open
    

    Eller skift til 15 for sessionen:

    sdk use java 15-open
    

Når du angiver tilgængelige versioner til installation ved hjælp af list-kommandoen, vil du se en lang række distributioner af Java:

sdk list java

Og installer yderligere versioner, såsom JDK 8:

sdk install java 8.0.181-oracle

SDKMAN kan arbejde med tidligere installerede eksisterende versioner. Bare lav en lokal installation med din egen versionsetiket og placeringen af ​​JDK:

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

Og brug det frit:

sdk use java my-local-13

Mere information er tilgængelig i SDKMAN Usage Guide sammen med andre SDK'er, den kan installere og administrere.

SDKMAN vil automatisk administrere din PATH og JAVA_HOME for dig, når du skifter version.

Installer manuelt fra OpenJDK-downloadsiden:

  1. Download OpenJDK til Mac OSX fra http://jdk.java.net/ (for eksempel Java 15)

  2. Fjern arkivering af OpenJDK-tjæren, og placer den resulterende mappe (dvs. jdk-15.jdk ) til din /Library/Java/JavaVirtualMachines/ mappe, da dette er standard og forventet placering af JDK-installationer. Du kan også installere hvor som helst du vil i virkeligheden.

Installer med Homebrew

Den version af Java, der var tilgængelig i Homebrew Cask før den 3. oktober 2018, var faktisk Oracle JVM. Nu er den dog nu blevet opdateret til OpenJDK. Sørg for at opdatere Homebrew, og så vil du se den seneste version, der er tilgængelig til installation.

  1. installer Homebrew, hvis du ikke allerede har gjort det. Sørg for, at den er opdateret:

     brew update
    
  2. Tilføj fadhanen, hvis du vil bruge AdoptOpenJDK-versionerne (som plejer at være mere aktuelle):

     brew tap adoptopenjdk/openjdk
    

    Disse fade skifter ofte deres Java-versioner, og der kan være andre haner derude med yderligere Java-versioner.

  3. Se efter installerbare versioner:

     brew search java   
    

    eller for AdoptOpenJDK-versioner:

     brew search jdk     
    
  4. Tjek detaljerne om den version, der vil blive installeret:

     brew info java
    

    eller for AdoptOpenJDK-versionen:

     brew info adoptopenjdk
    
  5. Installer en specifik version af JDK, såsom java11 , adoptopenjdk8 eller adoptopenjdk13 , eller bare java eller adoptopenjdk for den mest aktuelle af denne distribution. For eksempel:

     brew install java
    
     brew cask install adoptopenjdk13
    

Og disse vil blive installeret i /Library/Java/JavaVirtualMachines/ som er den traditionelle placering, der forventes på Mac OSX.

Andre installationsmuligheder:

Nogle andre varianter af OpenJDK er:

Azul Systems Java Zulu certificerede builds af OpenJDK kan installeres ved at følge instruktionerne på deres websted.

Zulu® er en certificeret build af OpenJDK, der er fuldt kompatibel med Java SE-standarden. Zulu er 100 % open source og kan frit downloades. Nu kan Java-udviklere, systemadministratorer og slutbrugere nyde de fulde fordele ved open source Java med implementeringsfleksibilitet og kontrol over opgraderingstiming.

Amazon Correto OpenJDK-builds har en nem at bruge en installationspakke til Java 8 eller Java 11 og installerer til standarden /Library/Java/JavaVirtualMachines/ mappe på Mac OSX.

Amazon Corretto er en gratis, multiplatform, produktionsklar distribution af Open Java Development Kit (OpenJDK). Corretto leveres med langsigtet support, der vil omfatte ydeevneforbedringer og sikkerhedsrettelser. Amazon kører Corretto internt på tusindvis af produktionstjenester, og Corretto er certificeret som kompatibel med Java SE-standarden. Med Corretto kan du udvikle og køre Java-applikationer på populære operativsystemer, herunder Linux, Windows og macOS.

Hvor er mit JDK?!?!

For at finde placeringer af tidligere installerede Java JDK'er installeret på standard systemplaceringer, brug:

/usr/libexec/java_home -V

Matchende Java Virtual Machines (8):
15, x86_64:"OpenJDK 15" /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home14, x86_64:"OpenJDK 14" /Library/Java/JavaVirtualMachines/jdk/Contents:x86_64,x86_64. "OpenJDK 13" /Library/Java/JavaVirtualMachines/openjdk-13.jdk/Contents/Home12, x86_64:"OpenJDK 12" /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
11, x86_64:"Java SE 11" /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, x86_64:"Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_144, x86_64:"Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

Du kan også kun rapportere placeringen af ​​en specifik Java-version ved hjælp af -v . For eksempel for Java 15:

/usr/libexec/java_home -v 15

/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home

At kende placeringen af ​​de installerede JDK'er er også nyttigt, når du bruger værktøjer som JEnv, eller tilføjer en lokal installation til SDKMAN eller forbinder et system JDK i Jabba -- og du skal vide, hvor du kan finde dem.

Hvis du har brug for at finde JDK'er installeret af andre værktøjer, så tjek disse steder:

  • SDKMAN installeres til ~/.sdkman/candidates/java/
  • Jabba installerer til ~/.jabba/jdk

Skifter version manuelt

Den eksekverbare Java er en indpakning, der vil bruge det JDK, der er konfigureret i JAVA_HOME , så du kan ændre det til også at ændre, hvilket JDK der er i brug.

For eksempel, hvis du har installeret eller fjernet JDK 15 til /Library/Java/JavaVirtualMachines/jdk-15.jdk hvis det er det højeste versionsnummer burde det allerede være standard, hvis ikke kan du blot indstille:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home

Og nu vil den eksekverbare Java-fil i stien se dette og bruge den korrekte JDK.

Brug af /usr/libexec/java_home værktøj som tidligere beskrevet hjælper dig med at oprette aliaser eller køre kommandoer for at ændre Java-versioner ved at identificere placeringen af ​​forskellige JDK-installationer. For eksempel oprettelse af shell-aliasser i din .profile eller .bash_profile for at ændre JAVA_HOME til dig:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
export JAVA_15_HOME=$(/usr/libexec/java_home -v15)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'
alias java14='export JAVA_HOME=$JAVA_14_HOME'
alias java15='export JAVA_HOME=$JAVA_15_HOME'

# default to Java 15
java15

For derefter at ændre versioner skal du blot bruge aliaset.

java8
java -version

java version "1.8.0_144"

Selvfølgelig indstiller du JAVA_HOME virker også manuelt!

Skift version med JEnv

JEnv forventer, at Java JDK'erne allerede eksisterer på maskinen og kan være hvor som helst. Typisk vil du finde installerede Java JDK'er i /Library/Java/JavaVirtualMachines/ . JEnv tillader indstilling af den globale version af Java, en for den aktuelle shell, og en lokal version pr. mappe, som er praktisk, når nogle projekter kræver andre versioner end andre.

  1. Installer JEnv, hvis du ikke allerede har gjort det, instruktioner på webstedet http://www.jenv.be/ for manuel installation eller brug af Homebrew.

  2. Tilføj en hvilken som helst Java-version til JEnv (juster mappen, hvis du har placeret denne et andet sted ):

    jenv add /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    
  3. Indstil din globale version ved hjælp af denne kommando:

    jenv global 15
    

Du kan også tilføje andre eksisterende versioner ved hjælp af jenv add på lignende måde, og angiv dem, der er tilgængelige. For eksempel Java 8:

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

Se JEnv-dokumenterne for flere kommandoer. Du kan nu skifte mellem alle Java-versioner (Oracle, OpenJDK, andre) til enhver tid enten for hele systemet, for skaller eller pr. lokal mappe.

For at hjælpe med at administrere JAVA_HOME mens du bruger JEnv, kan du tilføje eksportplugin'et for at gøre dette for dig.

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

Eksportpluginnet justerer muligvis ikke JAVA_HOME hvis den allerede er indstillet, så skal du muligvis rydde denne variabel i din profil, så den kan administreres af JEnv.

Du kan også bruge jenv exec <command> <parms...> at køre enkelte kommandoer med JAVA_HOME og PATH indstillet korrekt for den ene kommando, hvilket kunne omfatte åbning af en anden shell.

Installation og skift af versioner med Jabba

Jabba håndterer også både installationen og omskiftningen. Jabba placerer også de installerede JDK'er i sit eget mappetræ, som typisk er ~/.jabba/jdk .

  1. Installer Jabba ved at følge instruktionerne på hjemmesiden.

  2. Liste over tilgængelige JDK'er

    jabba ls-fjernbetjening

  3. Installer Java JDK 12

    jabba installer [email protected]

  4. Brug det:

    jabba brug [email protected]

Du kan også kalde versionsnavne, linke til eksisterende JDK'er, der allerede er installeret, og finde en blanding af interessante JDK'er såsom GraalVM, Adopt JDK, IBM JDK og mere. Den komplette brugsvejledning er også tilgængelig på hjemmesiden.

Jabba vil automatisk administrere din PATH og JAVA_HOME for dig, når du skifter version.


Sådan gjorde jeg det.

Trin 1: Installer Java 11

Du kan downloade Java 11 dmg til mac herfra:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

Trin 2: Efter installation af Java 11. Bekræft installation af alle versioner. Indtast følgende kommando i din terminal.

/usr/libexec/java_home -V

Trin 3: Rediger .bash_profile

sudo nano ~/.bash_profile

Trin 4: Tilføj 11.0.1 som standard. (Tilføj under linjen til bash_profile-filen).

export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.1)

for at skifte til en hvilken som helst version

export JAVA_HOME=$(/usr/libexec/java_home -v X.X.X)

Tryk nu på CTRL+X for at afslutte bash. Tryk på 'Y' for at gemme ændringer.

Trin 5: Genindlæs bash_profile

source ~/.bash_profile

Trin 6: Bekræft den aktuelle version af Java

java -version

Manuel skift af systemstandardversion uden tredjepartsværktøjer:

Som beskrevet i dette ældre svar på macOS /usr/bin/java er et indpakningsværktøj, der vil bruge Java-versionen peget med JAVA_HOME eller hvis den variabel ikke er indstillet, vil søge efter Java-installationer under /Library/Java/JavaVirtualMachines/ og vil bruge den med højeste version. Det bestemmer versioner ved at se på Contents/Info.plist under hver pakke.

Bevæbnet med denne viden kan du:

  • styr hvilken version systemet vil bruge ved at omdøbe Info.plist i versioner, du ikke ønsker at bruge som standard (denne fil bruges ikke af selve Java-runtimen).
  • kontroller, hvilken version der skal bruges til specifikke opgaver, ved at indstille $JAVA_HOME

Jeg har lige bekræftet, at dette stadig er sandt med OpenJDK og Mojave.

På et helt nyt system er der ingen Java-version installeret:

$ java -version
No Java runtime present, requesting install.

Annuller dette, download OpenJDK 11 &12ea på https://jdk.java.net;installer OpenJDK11:

$ cd /Library/Java/JavaVirtualMachines/
$ sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz

System java er nu 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

Installer OpenJDK12 (tidlig adgang i øjeblikket):

$ sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz 

System java er nu 12:

$ java -version
openjdk version "12-ea" 2019-03-19
[...]

Lad os nu "skjule" OpenJDK 12 fra systemets java-indpakning:

$ cd jdk-12.jdk/Contents/
$ sudo mv Info.plist Info.plist.disabled

System-java er tilbage til 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

Og du kan stadig bruge version 12 punktligt ved manuelt at indstille JAVA_HOME :

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ java -version
openjdk version "12-ea" 2019-03-19
[...]

Java tag