it-swarm.com.de

Wie installiere ich Java unter Mac OSX, um die Versionsumstellung zu ermöglichen?

Ich möchte OpenJDK Java 11 unter Mac OSX installieren und zusammen mit anderen JDKs verwenden, da es eine neuere Version ist. Derzeit habe ich die tar.gz heruntergeladen und in meinen Pfad eingefügt, aber das ist schwer zu warten. 

Die einzigen anderen Installationen, die mehr automatisch erledigt haben, sind die Oracle-Installation über Homebrew-Fass. Dies ist jedoch das kommerzielle JDK und ich möchte das Open-Source-Fass! 

brew cask info Java

Zeigt an: 

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

Welches ist das Oracle JDK und nicht OpenJDK, siehe: https://discourse.brew.sh/t/how-to-install-openjdk-with-brew/712

Die folgenden Anweisungen aus einer älteren Frage ( Mac OS X und mehrere Java-Versionen ) sind veraltet und geben mir die falsche Version - Oracle nicht OpenJDK.

Update: _ ​​Ab dem 3. Oktober 2018 zeigt der Homebrew-Fass jetzt auf OpenJDK 11

90
Jayson Minard

Hinweis: Diese Lösungen funktionieren für verschiedene Versionen von Java, einschließlich Java 11 und der neuen Java 12 und für alle anderen vorherigen Java Versionen, die von den aufgelisteten Versionsmanagern abgedeckt werden. Dazu gehören alternative JDKs von OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal und anderen. Einfache Arbeit mit Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 und sogar früher Zugriff Java 13 !

Sie haben einige Möglichkeiten, wie Sie die Installation durchführen und das JDK-Switching verwalten können. Die Installation kann über Homebrew, [~ # ~] sdkman [~ # ~] , Jabba oder eine manuelle Installation erfolgen. Das Umschalten kann erfolgen durch JEnv , [~ # ~] sdkman [~ # ~] , Jabba oder manuell durch Setzen von Java_HOME. All dies wird im Folgenden beschrieben.


Installation

Installieren Sie zunächst Java mit einer beliebigen Methode, einschließlich Homebrew, SDKMAN oder einer manuellen Installation der Datei tar.gz. Die Vorteile einer manuellen Installation bestehen darin, dass der Speicherort des JDK an einem für Mac OSX standardisierten Speicherort abgelegt werden kann.

Installieren Sie mit SDKMAN

Dies ist ein einfaches Modell, da es sowohl die Installation als auch die Versionsumschaltung übernimmt. Dabei ist zu beachten, dass das JDK in einem nicht standardmäßigen Verzeichnis installiert wird.

< siehe unten "Installieren und Wechseln von Versionen mit SDKMAN">

Installieren Sie mit Jabba

Dies ist auch insofern ein einfaches Modell, als sowohl die Installation als auch der Versionswechsel mit demselben Tool durchgeführt werden. Die Installationen werden in einem nicht standardmäßigen Verzeichnis durchgeführt.

< siehe unten "Versionen mit Jabba installieren und wechseln">

Manuell von der OpenJDK-Downloadseite installieren:

  1. Laden Sie OpenJDK für Mac OSX von http://jdk.Java.net/ herunter.

  2. Deinstallieren Sie das OpenJDK-Tar und legen Sie den resultierenden Ordner (d. H. jdk-12.jdk) In Ihrem Ordner /Library/Java/JavaVirtualMachines/ Ab, da dies der Standardspeicherort für JDK-Installationen ist. Sie können auch installieren, wo immer Sie möchten.

Installieren Sie mit Homebrew

Die Version von Java, die vor dem 3. Oktober 2018 in Homebrew Cask verfügbar war, war in der Tat die Oracle-JVM. Jetzt wurde es jedoch auf OpenJDK aktualisiert. Achten Sie darauf, Homebrew zu aktualisieren, und dann wird die neueste verfügbare Version für die Installation angezeigt.

  1. Installiere Homebrew , falls du es noch nicht getan hast. Stellen Sie sicher, dass es aktualisiert wird:

    brew update
    
  2. Fügen Sie den Fass-Tipp hinzu, falls Sie dies noch nicht getan haben (oder wenn Sie mit Schritt 3 keine älteren Java Versionen mehr sehen):

    brew tap homebrew/cask-versions
    

    und für die AdoptOpenJDK -Versionen füge diesen Tipp hinzu:

    brew tap adoptopenjdk/openjdk
    

    Diese Fässer ändern häufig ihre Java Versionen, und es gibt möglicherweise andere Abzweigungen mit zusätzlichen Java Versionen.

  3. Suchen Sie nach installierbaren Versionen:

    brew search Java   
    

    oder für AdoptOpenJDK Versionen:

    brew search jdk     
    
  4. Überprüfen Sie die Details der zu installierenden Version:

    brew cask info Java
    

    oder für die AdoptOpenJDK-Version:

    brew cask info adoptopenjdk
    
  5. Installieren Sie eine bestimmte Version des JDK wie Java11, adoptopenjdk8 Oder nur Java oder adoptopenjdk für die aktuelle Version. Zum Beispiel:

    brew cask install Java
    

    Sie können auch den vollqualifizierten Pfad zu älteren Versionen verwenden:

    brew cask install homebrew/cask-versions/Java11
    

Und diese werden in /Library/Java/JavaVirtualMachines/ Installiert, dem traditionellen Speicherort, der unter Mac OSX erwartet wird.

Andere Installationsoptionen:

Einige andere Varianten von openJDK sind:

Azul Systems Java Zulu zertifizierte Builds von OpenJDK können wie folgt installiert werden Anweisungen auf ihrer Website .

Zulu® ist ein zertifizierter Build von OpenJDK, der den Java SE-Standard vollständig erfüllt. Zulu ist zu 100% Open Source und kann kostenlos heruntergeladen werden. Jetzt können Java Entwickler, Systemadministratoren und Endbenutzer die vollen Vorteile von Open Source Java mit Bereitstellungsflexibilität und Kontrolle über den Upgrade-Zeitpunkt nutzen.

Amazon Correto OpenJDK-Builds haben ein einfach zu verwendendes Installationspaket für Version 8 oder Version 11 (andere Versionen) kommen) und wird unter Mac OSX im Standardverzeichnis /Library/Java/JavaVirtualMachines/ installiert.

Amazon Corretto ist eine kostenlose, produktionsreife Multiplattform-Distribution des OpenJava Development Kit (OpenJDK). Corretto wird mit langfristigem Support geliefert, der Leistungsverbesserungen und Sicherheitsverbesserungen umfasst. Amazon führt Corretto intern mit Tausenden von Produktionsservices aus, und Corretto ist als kompatibel mit dem Standard Java SE zertifiziert. Mit Corretto können Sie Java Anwendungen auf gängigen Betriebssystemen wie Linux, Windows und macOS entwickeln und ausführen.


Wo ist mein JDK?!?!

Verwenden Sie Folgendes, um Speicherorte zuvor installierter Java JDKs zu finden, die an den Standardsystemstandorten installiert sind:

/usr/libexec/Java_home -V

Passende Java virtuelle Maschinen (5):
12, 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

Sie können auch nur den Speicherort einer bestimmten Java Version mit -v Melden. Zum Beispiel für Java 12:

/usr/libexec/Java_home -v 12

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

Die Position der installierten JDKs zu kennen, ist auch nützlich, wenn Sie Tools wie JEnv verwenden, eine lokale Installation zu SDKMAN hinzufügen oder ein System-JDK in Jabba verknüpfen - und Sie müssen wissen, wo Sie diese finden.

Wenn Sie JDKs finden müssen, die von anderen Tools installiert wurden, überprüfen Sie diese Speicherorte:

  • SDKMAN wird auf ~/.sdkman/candidates/Java/ Installiert
  • Jabba installiert auf ~/.jabba/jdk

Versionen manuell wechseln

Die ausführbare Datei Java ist ein Wrapper, der das in Java_HOME Konfigurierte JDK verwendet. Sie können dies also ändern, um auch das verwendete JDK zu ändern.

Wenn Sie beispielsweise JDK 12 auf /Library/Java/JavaVirtualMachines/jdk-12.jdk Installiert oder entpackt haben, sollte dies bereits die Standardversion sein, wenn dies nicht der Fall ist, können Sie einfach Folgendes festlegen:

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

Und jetzt wird alles, was sich in der ausführbaren Datei Java im Pfad befindet, dies sehen und das richtige JDK verwenden.

Wenn Sie das Dienstprogramm /usr/libexec/Java_home Wie oben beschrieben verwenden, können Sie Aliase erstellen oder Befehle ausführen, um Java Versionen zu ändern, indem Sie die Speicherorte der verschiedenen JDK-Installationen identifizieren. Erstellen Sie beispielsweise Shell-Aliase in Ihrem .profile Oder .bash_profile, Um Java_HOME Für Sie zu ändern:

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)

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'

# default to Java 12
Java12

Verwenden Sie zum Ändern der Versionen einfach den Alias.

Java8
Java -version

Java-Version "1.8.0_144"

Natürlich funktioniert die manuelle Einstellung von Java_HOME Auch!


Versionswechsel mit JEnv

JEnv erwartet, dass die Java JDKs bereits auf der Maschine vorhanden sind und vorhanden sein können an jedem Ort. In der Regel finden Sie installierte Java JDKs in /Library/Java/JavaVirtualMachines/. Mit JEnv können Sie die globale Version von Java, eine für die aktuelle Shell, und eine lokale Version pro Verzeichnis festlegen. Dies ist praktisch, wenn für einige Projekte andere Versionen als für andere erforderlich sind.

  1. Installieren Sie JEnv, falls Sie dies noch nicht getan haben. Anweisungen zur manuellen Installation oder Verwendung von Homebrew finden Sie auf der Website http://www.jenv.be/ .

  2. Fügen Sie eine beliebige Java -Version zu JEnv hinzu ( passen Sie das Verzeichnis an, wenn Sie es an einer anderen Stelle platziert haben):

    jenv add /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
    
  3. Stellen Sie Ihre globale Version mit diesem Befehl ein:

    jenv global 12
    

In ähnlicher Weise können Sie auch andere vorhandene Versionen mit jenv add Hinzufügen und die verfügbaren auflisten. Zum Beispiel Java 8:

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

Weitere Befehle finden Sie in den JEnv-Dokumenten . Sie können jetzt jederzeit zwischen Java Versionen (Oracle, OpenJDK, andere) wechseln, entweder für das gesamte System, für Shells oder für jedes lokale Verzeichnis.

Um Java_HOME Bei der Verwendung von JEnv zu verwalten, können Sie das Export-Plugin hinzufügen, um dies für Sie zu tun.

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

Das Export-Plugin passt Java_HOME Möglicherweise nicht an, wenn es bereits festgelegt ist. Daher müssen Sie diese Variable möglicherweise in Ihrem Profil löschen, damit sie von JEnv verwaltet werden kann.

Sie können auch jenv exec <command> <parms...> Verwenden, um einzelne Befehle auszuführen, wobei Java_HOME Und PATH für diesen einen Befehl richtig eingestellt sind. Dies kann auch das Öffnen einer anderen Shell einschließen.


Installieren und Wechseln von Versionen mit SDKMAN

[~ # ~] sdkman [~ # ~] ist ein bisschen anders und erledigt sowohl die Installation und das Schalten. SDKMAN legt die installierten JDKs auch in einem eigenen Verzeichnisbaum ab, der normalerweise ~/.sdkman/candidates/Java Lautet. Mit SDKMAN können Sie eine globale Standardversion und eine für die aktuelle Shell spezifische Version festlegen.

  1. Installieren Sie SDKMAN von https://sdkman.io/install

  2. Installieren Sie Java 12 mit SDKMAN:

    sdk install Java 12.0.0-open 
    
  3. Machen Sie 12 zur Standardversion:

    sdk default Java 12.0.0-open
    

    Oder wechseln Sie für die Sitzung zu 12:

    sdk use Java 12.0.0-open
    

Sie können verfügbare Versionen für die Installation mit dem Befehl list auflisten:

sdk list Java

Und installieren Sie zusätzliche Versionen wie JDK 8:

sdk install Java 8.0.181-Oracle

SDKMAN kann mit bereits installierten Versionen arbeiten. Führen Sie einfach eine lokale Installation durch und geben Sie dabei Ihr eigenes Versionslabel und den Speicherort des JDK an:

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

Und benutze es frei:

sdk use Java my-local-12

Weitere Informationen finden Sie im SDKMAN-Benutzerhandbuch zusammen mit anderen SDKs , die installiert und verwaltet werden können.

SDKMAN verwaltet Ihr PATH und Java_HOME Automatisch für Sie, wenn Sie die Version ändern.


Versionen mit Jabba installieren und wechseln

Jabba übernimmt auch die Installation und das Umschalten. Jabba legt die installierten JDKs auch in einem eigenen Verzeichnisbaum ab, der normalerweise ~/.jabba/jdk Lautet.

  1. Installieren Sie Jabba, indem Sie den Anweisungen auf der Homepage folgen.

  2. Liste der verfügbaren JDKs

    jabba ls-remote
    
  3. Installieren Sie Java JDK 12

    jabba install [email protected]
    
  4. Benutze es:

    jabba use [email protected]
    

Sie können auch Versionsnamen aliasen, Links zu bereits installierten JDKs erstellen und eine Mischung aus interessanten JDKs wie GraalVM, Adopt JDK, IBM JDK und mehr finden. Die vollständige Bedienungsanleitung finden Sie auch auf der Homepage.

Jabba verwaltet automatisch Ihr PATH und Java_HOME Für Sie, wenn Sie die Version ändern.

457
Jayson Minard

System-Standardversion ohne Tools von Drittanbietern manuell wechseln:

Wie in diese ältere Antwort auf MacOS beschrieben, ist /usr/bin/Java ein Wrapper-Tool, das die Java-Version verwendet, auf die auf Java_HOME verwiesen wird. Wenn diese Variable nicht gesetzt ist, wird unter /Library/Java/JavaVirtualMachines/ nach Java-Installationen gesucht und die Version mit der höchsten Version verwendet. Es ermittelt Versionen, indem es unter jedem Paket auf Contents/Info.plist schaut.

Mit diesem Wissen können Sie:

  • legen Sie fest, welche Version das System verwenden soll, indem Sie Info.plist in Versionen umbenennen, die Sie nicht als Standard verwenden möchten (diese Datei wird nicht von der eigentlichen Java-Laufzeitumgebung selbst verwendet).
  • steuern Sie, welche Version für bestimmte Aufgaben verwendet werden soll, indem Sie $Java_HOME einstellen.

Ich habe gerade bestätigt, dass dies mit OpenJDK & Mojave immer noch zutrifft.

Auf einem brandneuen System ist keine Java-Version installiert:

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

Abbrechen, Download von OpenJDK 11 & 12ea unter https://jdk.Java.net ; Installieren von OpenJDK11:

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

System Java ist jetzt 11:

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

Installiere OpenJDK12 (momentaner Zugriff):

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

System Java ist jetzt 12:

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

Lassen Sie uns nun OpenJDK 12 vor dem Java-Wrapper des Systems "ausblenden":

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

System Java ist zurück zu 11:

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

Sie können Version 12 dennoch pünktlich verwenden, indem Sie Java_HOME manuell einstellen:

$ export Java_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ Java -version
openjdk version "12-ea" 2019-03-19
[...]
2
Hugues M.

So habe ich es gemacht. 

Schritt 1: Installieren Sie Java 11

Sie können Java 11 DMG für Mac von hier herunterladen: https://www.Oracle.com/technetwork/Java/javase/downloads/jdk11-downloads-5066655.html

Schritt 2: Nach der Installation von Java 11. Bestätigen Sie die Installation aller Versionen. Geben Sie den folgenden Befehl in Ihr Terminal ein.

/usr/libexec/Java_home -V

Schritt 3: Edit_bash_profile

Sudo nano ~/.bash_profile

Schritt 4: Fügen Sie standardmäßig 11.0.1 hinzu. (Fügen Sie der bash_profile-Datei eine Zeile unterhalb hinzu).

export Java_HOME=$(/usr/libexec/Java_home -v 11.0.1)

zu einer beliebigen Version wechseln

export Java_HOME=$(/usr/libexec/Java_home -v X.X.X)

Drücken Sie jetzt STRG + X, um die Bash zu verlassen. Drücken Sie 'Y', um die Änderungen zu speichern.

Schritt 5: Lädt bash_profile neu

source ~/.bash_profile

Schritt 6: Aktuelle Version von Java bestätigen

Java -version
1
VK321

Eine andere Alternative ist SDKMAN ! Siehe https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/

Installieren Sie zuerst SDKMAN: https://sdkman.io/install und dann ...

  1. Installieren Sie Oracle JDK 8 mit: sdk install Java 8.0.181-Oracle
  2. Installieren Sie OpenJDK 11 mit: sdk install Java 11.0.0-open

Wechseln:

  • Mit sdk use Java 8.0.181-Oracle zum JDK 8 wechseln
  • Wechseln Sie zu JDK 11 mit sdk use Java 11.0.0-open

So legen Sie einen Standard fest:

  • Standardeinstellung für JDK 8 mit sdk default Java 8.0.181-Oracle
  • Voreinstellung für JDK 11 mit sdk default Java 11.0.0-open
0
Wim Deblauwe