Wie installiere ich Java 8 auf Mac?

Ich möchte etwas mit dem neuesten JavaFX programmieren, das Java 8 benötigt. Ich benutze IntelliJ 13 CE und Mac OS X 9 Mavericks. Ich habe Oracles Java 8-Installationsprogramm ausgeführt, und die Dateien sehen so aus, als wären sie gelandet

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

aber frühere Versionen sind bei

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

Ich bin mir nicht sicher, warum das neueste Installationsprogramm dies in /Library anstelle von /System/Library (und was der Unterschied ist). Aber /usr/libexec/java_home findet nicht 1.8, also funktionieren alle Posts, die ich gefunden habe, um deine aktuelle Java-Version einzustellen, nicht. Ich habe versucht, einen symbolischen Link hinzuzufügen, um es wie 1.8 aussehen zu lassen, ist in der /System/Library... Pfad, aber es hilft nicht. /usr/libexec/java_home -V listet nur das alte Java 1.6 auf.

Ironischerweise zeigt das “Java” -Bedienfeld unter Systemeinstellungen nur Java 1.8!

Warum bringt Oracle’s Installer es nicht dorthin, wo es wirklich hingehört? Und wie kann ich dieses Problem umgehen?

   

Verlassen Sie sich nicht auf Oracle, um Java ordnungsgemäß auf Ihrem Mac zu installieren.

Verwenden Sie Homebrew . Dies wird die neueste jdk installieren:

 brew cask install java 

Wenn Sie mehrere Java-Versionen auf Ihrem Mac verwalten möchten, sollten Sie jenv verwenden .

UPDATE: Nun, da Java 8 nicht mehr die aktuellste Version ist, installieren Sie Java 8 wie folgt:

 brew tap caskroom/versions brew cask install java8 

Um eine Liste aller älteren Versionen von Java zu erhalten: brew tap caskroom/versions und dann brew cask search java

Wir verwenden Brew- Casks, da wir sonst das Oracle-GUI-Installationsprogramm verwenden würden, das Java wahrscheinlich nicht richtig auf Ihrem Mac installiert. (Verwenden Sie brew cask install APP , um GUI-Apps zu installieren; verwenden Sie brew install APP .) Java ist keine GUI-App; Es sollte kein “Fass” erfordern, aber zumindest ist Oracle konsistent.

Für El Capitan , Sierra und Hohe Sierra

Installieren und aktualisieren Sie zuerst das Gebräu vom 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 

Java Neueste:

 brew cask install java 

Ich habe das gerade auf meinem MBP gemacht und musste es benutzen

 $ brew tap caskroom/versions $ brew cask install java8 

um java8 zu installieren.

Eine Option, die ich zum Ausführen von Anwendungen auf meinem lokalen Computer wirklich mag, ist die Verwendung von Docker. Sie können Ihre Anwendung einfach innerhalb des offiziellen JDK-Containers ausführen – das bedeutet, dass Sie sich nicht darum kümmern müssen, alles auf Ihrem lokalen Rechner einzurichten (oder sorgen Sie sich darum, mehrere verschiedene Versionen des JDK für verschiedene Apps auszuführen)

Auch wenn dies Ihnen bei Ihren aktuellen Installationsproblemen nicht helfen kann, ist es eine Lösung, die Ihnen erlaubt, das Minenfeld von Problemen im Zusammenhang mit dem Versuch, Java korrekt auf Ihrem Dev-Rechner laufen zu lassen, zu umgehen!

Die Vorteile sind:

  1. Sie müssen keine Java-Version auf Ihrem lokalen Computer einrichten (Sie führen Java nur in einem Container aus, den Sie aus Docker Hub ziehen)
  2. Sehr einfach zu verschiedenen Versionen von Java wechseln, indem Sie einfach das Tag auf dem Container ändern.
  3. Projektabhängigkeiten werden innerhalb des Containers installiert – wenn Sie also Ihre Konfiguration durcheinander bringen, können Sie den Container einfach neu starten und neu starten.

Ein sehr einfaches Beispiel:

Erstellen Sie eine Dockerfile :

 FROM java:8 COPY . /usr/src/myapp WORKDIR /usr/src/myapp 
  • Hier geben wir den Java-Container an, der die Version 8 des SDK java:8 ( java:8 – um Java 7 zu verwenden, könnten Sie einfach Folgendes angeben: java:7 )
  • Wir /usr/src/myapp das lokale Verzeichnis dem Verzeichnis: /usr/src/myapp im Container zu

Erstellen Sie eine docker-compose.yml Datei:

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

Angenommen, wir haben diese Java-Datei:

HelloWorld.java

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

So haben wir die folgende Dateistruktur:

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

Sie können verschiedene Java-Sachen machen wie:

kompilieren:

 docker-compose run --rm java javac HelloWorld.java 
  • Sie sollten beachten, dass die HelloWorld.class in Ihrem aktuellen Verzeichnis angezeigt wird (dies ist der Fall, weil wir das aktuelle Verzeichnis dem Speicherort innerhalb des Containers zugeordnet haben, in dem unser Code vorhanden ist

Lauf:

 docker-compose run --rm java java HelloWorld 
  • Hinweis: Wenn Sie das erste Mal ausführen, wird das Bild usw. abgerufen. Dies wird eine Weile dauern – es passiert nur beim ersten Mal
  • docker-compose run – Führt einen Befehl aus dem Container aus
  • -rm weist -rm an, den Container nach Abschluss des Befehls zu entfernen
  • java ist der Name des Service / Containers (aus unserer docker-compose-Datei), gegen den dieser Befehl ausgeführt wird
  • Der Rest der Zeile ist der Befehl, der innerhalb des Containers ausgeführt wird.

Dies ist ein ziemlich cooler Weg, verschiedene Java-Versionen für verschiedene Anwendungen auszuführen, ohne dass Sie Ihre lokale Umgebung komplett durcheinander bringen müssen :).

Hier ist ein etwas komplexeres Beispiel mit Maven und einer einfachen Spring App

Haftungsausschluss:

  • Ich habe das nicht wirklich in einer IDE wie IntelliJ versucht – also nicht ganz sicher, wie dieser Aspekt der Dinge funktionieren würde. Obwohl es aussieht, als würde die Docker-Unterstützung kommen
  • Hier ist ein wesentlich komplexeres Beispiel, das Microservices mit Spring Boot, Zuul und Docker ausführt

Ich habe das gleiche Problem zu lösen, weil ich JDK8 installieren muss, um Android SDK Manager auszuführen (weil es scheint, dass nicht gut mit JDK9 funktionieren). Allerdings erzähle ich dir wie ich alle Probleme auf einem Mac (Sierra) löse.

Zuerst müssen Sie mit Fass und Jenv brauen .

  1. Hier finden Sie eine nützliche Anleitung, Homebrew Cask Installationsanleitung . Denken Sie daran, auf “Caskroom / Versionen” im Terminal zu brew tap caskroom/versions : brew tap caskroom/versions
  2. Danach installiere jenv mit: brew install jenv
  3. Installieren Sie die gewünschte Version mit Cask brew cask install java8 (oder java7 oder java wenn Sie die neueste Version installieren möchten, jdk9)
  4. Der letzte Schritt besteht darin, zu konfigurieren, welche Version ausgeführt werden soll (und jenv Ihre JAVA_HOME- jenv versions verwalten), um alle auf Ihrem Rechner installierten Versionen jenv versions , und dann die gewünschte jenv global [JDK_NAME_OF_LIST] mit jenv global [JDK_NAME_OF_LIST]

Sie können andere nützliche Informationen hier auf diesem Github Gist brew-java-and-jenv.md finden , auf diesem Blog Installieren Sie mehrere JDK auf einem Mac und auf der Jenv-Website

Ich habe Anwendungen, die sowohl Java 7 als auch 8 verwenden und ständig hin- und hergehen müssen.

Ich benutze dieses von Johan geschriebene Skript:

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

Sie können es jetzt beim Start festlegen oder das Skript danach aufrufen.
Installieren Sie das JDK für 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

Gebräu Fass installieren Caskroom / Versionen / Java8

Wenn Sie mehrere Java-Versionen auf Ihrem Rechner haben und diese zur Laufzeit dynamisch auswählen wollen, habe ich zwei Versionen:

 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/ 

Sie können sie ändern, indem Sie den Inhalt von /etc/profile ändern. Fügen Sie einfach die folgenden zwei Zeilen am Ende der Datei hinzu (oder ändern Sie sie):

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

In meinem Fall sollte es wie folgt aussehen, wenn ich Folgendes verwenden möchte:

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 

Nachdem Sie die Datei gespeichert haben, führen Sie bitte source /etc/profile und es sollte funktionieren. Hier sind Ergebnisse, wenn ich die erste und zweite Option entsprechend verwende:

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) 

Der process ist ähnlich, wenn sich Ihr Java-Ordner an verschiedenen Orten befindet.

Gebräu verwenden

 brew install Caskroom/cask/java 

Einfachster Weg –

 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 – Was ist Brühfass? Homebrew-Cask erweitert Homebrew, und triggers den Ärger der Ausführung eines zusätzlichen Befehls – “Installieren, ziehen Sie dieses Symbol …” nach der Installation einer Anwendung mit Homebrew .

Der beste Weg ist es, den Brew Package Manager aber den Befehl zu verwenden

  brew cask install java8 

schlägt mit Fehler fehl:

 Error: No available formula with the name "java8" 

Also benutze es

 brew cask install caskroom/versions/java8 

Wie habe ich “caskroom / versions / java8” gefunden?

 brew cask search java8 

JavaVirtualMachines Ordner ist jetzt korrekt

Warum bringt Oracle’s Installer es nicht dorthin, wo es wirklich hingehört? Und wie kann ich dieses Problem umgehen?

Kein Problem.

Der Ordner /Library/Java/JavaVirtualMachines/ ist das neue Home für JVM s auf macOS .

Verwenden Sie zum Installieren einer JVM ein Installationsprogramm (siehe unten).

Verwenden Sie zum Deinstallieren einfach den Finder, um eine JVM aus diesem Ordner zu löschen. Sie werden aufgefordert, das Systemadministratorkennwort einzugeben, um das Entfernen abzuschließen.


Java 9 & 10 & 11

Im Jahr 2010 schloss sich Apple zusammen mit Oracle , IBM , Red Hat , Azul und anderen Java-Anbietern dem OpenJDK- Projekt an. Jedes Mitglied liefert Quellcode, Tests und Feedback an die einheitliche OpenJDK-Codebasis.

Apple hat den Großteil seines Mac-spezifischen Codes für seine JVM beigesteuert. Jetzt veröffentlicht Apple keine eigene Mac-spezifische JVM mehr. Sie haben nun die Wahl des JVM-Lieferanten mit Builds, die von der OpenJDK-Codebasis stammen.

Sie finden den Quellcode unter http://openjdk.java.net

Seien Sie sich bewusst, dass Oracle, JCP und OpenJDK im Jahr 2017 einen neuen “Release-Train” -Plan für regelmäßig geplante Java-Versionen eingeführt haben, die auf vorhersehbare Weise bereitgestellt werden.

Lesen Sie diesen Blogeintrag von Aul Systems 2018-07 für viele Details, Elimination Java Update Confusion von Simon Ritter .

Anbieter

Eine ausführliche Liste früherer und aktueller JVM-Implementierungen finden Sie auf dieser Seite unter Wikipedia .

Hier sind drei derzeit aktive Quellen, die ich kenne.

Oracle JVM

Oracle bietet JDK- und JRE-Installationsprogramme für mehrere Plattformen, einschließlich macOS.

Ihr neuer Geschäftsplan ist die Bereitstellung einer Oracle-Implementierung von Java gegen eine Gebühr in der Produktion und ohne zusätzliche Kosten für Entwicklung / Test / Demo. Support für frühere Versionen erfordert ein kostenpflichtiges Support-Programm. Sie haben ihre Absicht erklärt, dass ihre Markenversion mit der OpenJDK-Version die gleichen Merkmale aufweist. Sie haben sogar ihre kommerziellen Add-ons wie Flight Recorder an das OpenJDK-Projekt gespendet.

Zulu & Zing von Azul

Azul Systems bietet eine Vielzahl von JVM-Produkten.

  • Ihre Zulu Linie basiert direkt auf OpenJDK und ist mit optionalen kostenpflichtigen Support-Paketen kostenlos erhältlich.
  • Ihre Zing Linie bietet kommerzielle JVM-Produkte, die mit alternativen technischen Implementierungen wie einem spezialisierten Müllsammler erweitert wurden .

Beide Linien bieten Installer für MacOS.

Ich verwende derzeit Zulu für Java 10.0.1 auf macOS High Sierra mit IntelliJ 2018.2 und Vaadin 8 . Ich habe von dieser Seite heruntergeladen . Übrigens finde ich keine Java-bezogenen Elemente in der Apple- Systemeinstellungen- App installiert.

AdoptierenOpenJDK.net

AdoptOpenJDK ist eine von der Community geleitete Initiative zur Erstellung von Binärdateien der OpenJDK-Quelle. Derzeit nur für Java 8 verfügbar, für die Verwendung der HotSpot- oder OpenJ9-Engine.

OpenJ9 von Eclipse

Ein weiterer Anbieter könnte in Zukunft das OpenJ9- Projekt sein. Jetzt gesponsert bei der Eclipse Foundation, mit Technologie und Unterstützung, gesponsert von IBM im Jahr 2017. Ich kann nicht erkennen, ob sie beabsichtigen, für Mac OS zu verteilen oder nicht.


Wie installiert man

Die Installationsprogramme von Oracle oder von Azul sind einfach zu bedienen. Führen Sie einfach die Installer-App auf Ihrem Mac aus. Ein Fenster erscheint, um den Fortschritt der Installation anzuzeigen.

Überprüfen Sie nach Abschluss Ihre JVM-Installation durch:

  • /Library/Java/JavaVirtualMachines/ Ordner /Library/Java/JavaVirtualMachines/ , um ein Element für die neue JVM /Library/Java/JavaVirtualMachines/ .
  • java -version eine Konsole wie Terminal.app aus und geben Sie java -version , um die Marken- und Versionsnummer Ihrer JVM java -version .

Nachdem Sie den Erfolg überprüft haben, heben Sie die Bereitstellung des .dmg-Images im Finder auf. Zerlegen Sie anschließend die heruntergeladene .dmg-Datei.

Am einfachsten ist es, die dmg-Datei von der folgenden Seite herunterzuladen und durch Doppelklick zu installieren

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

Suche nach verfügbaren JVMs aus dem Home-Verzeichnis

 ls -al /Library/Java/JavaVirtualMachines 

und aktualisieren Sie das .bash_profile mit relevent version

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

und schlussendlich

 source .bash_profile 

Unterhalb der Schritte funktionierte für mich.

1) Deinstallieren Sie alle jdks

Im Terminal-Fenster Kopieren und Einfügen den folgenden Befehl:

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

2) Installieren Sie APPLE jdk.

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

3) Lade das neueste JDK von Oracle herunter und installiere es, für mich war es JDK 1.82

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

Das ist alles, es wird wie ein Zauber wirken.

Ich hatte auch das gleiche Problem. Aber nach einem kleinen Schlag und Versuch konnte ich das Problem lösen.

Versuchen Sie 1.6 sdk von sudo rm zu entfernen und starten Sie Ihren Mac neu.

Laden Sie die .dmg-Datei erneut herunter. Es besteht die Möglichkeit, dass das heruntergeladene .dmg-Installationsprogramm beschädigt ist. Installieren Sie es erneut.

Führen Sie den folgenden Befehl nach der Installation aus. Es gibt Pfad für jdk 8. / usr / libexec / java_home -v 1.8

Sie können auch jdk 8-Ordner ausführen und sehen. Die Dateien sind möglicherweise ausgeblendet. ls -al / Bibliothek / Java / JavaVirtualMachines /