Ich möchte etwas mit dem neuesten JavaFX programmieren, das Java 8 erfordert. Ich verwende IntelliJ 13 CE und Mac OS X 9 Mavericks. Ich habe das Java 8-Installationsprogramm von Oracle ausgeführt, und die Dateien sehen so aus, als wären sie dort gelandet
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk
aber frühere Versionen sind bei
/System/Library/Java/JavaFrameworks/jdk1.6....
Nicht sicher, warum das neueste Installationsprogramm dies in /Library
anstelle von /System/Library
einfügt (noch was der Unterschied ist). Aber /usr/libexec/Java_home
findet keine 1.8, daher funktionieren alle Beiträge, die ich zum Einstellen Ihrer aktuellen Java-Version gefunden habe, nicht. Ich habe versucht, einen symbolischen Link hinzuzufügen, damit es so aussieht, als sei 1.8 im Pfad /System/Library...
, aber es hilft nicht. /usr/libexec/Java_home -V
listet immer nur das alte Java 1.6 auf.
Ironischerweise zeigt die Systemsteuerung "Java" in den Systemeinstellungen nur Java 1.8!
Warum legt das Installationsprogramm von Oracle es nicht an den richtigen Ort? Und wie kann ich dieses Problem umgehen?
Verlassen Sie sich nicht auf Oracle, um Java ordnungsgemäß auf Ihrem Mac zu installieren.
Verwenden Sie Homebrew . Dadurch wird das neueste JDK installiert:
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, wenn Sie möchten, dass Java 8 folgendermaßen installiert wird:
brew tap caskroom/versions
brew cask install Java8
Um eine Liste aller älteren Java-Versionen zu erhalten: brew tap caskroom/versions
und dann brew search Java
verwenden.
Wir verwenden brew cask , da wir ansonsten das Oracle GUI-Installationsprogramm verwenden, das Java wahrscheinlich nicht ordnungsgemäß 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. Sollte erfordert kein "Fass", aber zumindest Oracle ist konsistent.
Für El Capitan , Sierra und High Sierra
Installieren und aktualisieren Sie zuerstbrewvom 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 Latest:
brew cask install Java
Ich habe das nur bei meinem MBP gemacht und musste es verwenden
$ brew tap caskroom/versions
$ brew cask install Java8
um Java8 zu installieren.
Eine Option, die ich für das 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. Dies bedeutet, dass Sie sich keine Sorgen machen müssen, dass alles auf Ihrem lokalen Computer eingerichtet ist (oder dass Sie mehrere Versionen des JDK für verschiedene Anwendungen ausführen müssen).
Auch wenn dies bei Ihren aktuellen Installationsproblemen möglicherweise nicht hilfreich ist, ist dies eine Lösung, die bedeutet, dass Sie das Minenfeld von Problemen durchgehen können, die mit dem Versuch zusammenhängen, Java auf Ihrem Entwicklungscomputer korrekt auszuführen.
Die Vorteile sind:
Ein sehr einfaches Beispiel:
Erstellen Sie eine Dockerfile
:
FROM Java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
Java:8
- zur Verwendung von Java 7 können Sie einfach Folgendes angeben: Java:7
) /usr/src/myapp
im Container abErstellen Sie eine docker-compose.yml
-Datei:
version: "2"
services:
Java:
build: .
volumes:
- .:/usr/src/myapp
Nehmen wir an, wir haben diese Java-Datei:
HelloWorld.Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Wir haben also die folgende Dateistruktur:
.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.Java
Sie können verschiedene Java-Dinge ausführen wie:
compile:
docker-compose run --rm Java javac HelloWorld.Java
Lauf:
docker-compose run --rm Java java HelloWorld
docker-compose run
- führt einen Befehl innerhalb des Containers aus-rm
weist Docker an, den Container zu entfernen, sobald der Befehl ausgeführt wurdeJava
ist der Name des Dienstes/Containers (aus unserer Docker-Compose-Datei), für den dieser Befehl ausgeführt wirdDies ist eine ziemlich coole Art und Weise, verschiedene Versionen von Java für verschiedene Apps auszuführen, ohne die lokalen Einstellungen komplett durcheinander zu bringen :).
Hier ist ein etwas komplexeres Beispiel, das Maven und eine einfache Spring-App hat
Haftungsausschluss:
Ich habe das gleiche Problem zu lösen, weil ich JDK8 installieren muss, um den Android SDK Manager auszuführen (weil es so aussieht, als würde er nicht mit JDK9 funktionieren) ... Aber ich sage Ihnen, wie ich alle Probleme auf einem Mac (Sierra).
Zuerst brauchen Sie brew mit Fass und jenv.
brew tap caskroom/versions
brew install jenv
brew cask install Java8
(oder Java7
oder Java
, wenn Sie die neueste Version jdk9 installieren möchten).jenv versions
, um alle auf Ihrem Computer installierten Versionen aufzulisten. Aktivieren Sie dann die gewünschte Version mit jenv global [JDK_NAME_OF_LIST]
Weitere nützliche Informationen finden Sie hier zu diesem Github Gist brew-Java-and-jenv.md , auf diesem Blog Mehrere JDK auf einem Mac installieren und auf Jenv-Website
Java8 ist auf Homebrew nicht mehr verfügbar, brew install Java8
wird nicht funktionieren.
Verwenden Sie stattdessen:
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
Siehe this commit für technische Details.
Bitte beachten Sie auch, dass möglicherweise Probleme mit Cask adoptopenjdk8 exists in multiple taps
auftreten. Dies ist ein bekanntes Problem, an dem derzeit gearbeitet wird. Sie können es hier sehen:
https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106
Für diejenigen, die die Details nicht durchgehen möchten, hier eine Zusammenfassung:
# To install JDK8
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
# To be able to safely run 'brew cleanup'
brew untap adoptopenjdk/openjdk
brew untap caskroom/versions
brew cleanup
braufass installieren Caskroom/Versionen/Java8
Sie haben mehrere Quellen, um eine benutzerfreundliche Installations-App zu erhalten, mit der Sie Java auf Ihrem Mac installieren können. Andere Antworten, die Brew oder andere Ansätze nahelegen, erscheinen mir etwas extrem. Laden Sie einfach ein Mac-Installationsprogramm von einer vertrauenswürdigen Quelle herunter und führen Sie es aus.
Hier ist ein Flussdiagramm zum Auffinden einer Quelle von Java 11, von denen einige auch Java 8 bieten.
JavaVirtualMachines
ist jetzt korrektWarum setzt Oracle's Installer es nicht dort ein, wo es wirklich hingeht? Und wie kann ich dieses Problem umgehen?
Kein Problem.
Der Ordner /Library/Java/JavaVirtualMachines/
Ist das neue Zuhause 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 die Entfernung abzuschließen.
Im Jahr 2010 trat Apple dem OpenJDK project bei, zusammen mit Oracle , IBM , Red Hat , Azul und andere Java Anbieter. Jedes Mitglied trägt Quellcode, Tests und Feedback zur einheitlichen OpenJDK-Codebasis bei.
Apple hat den größten Teil seines Mac-spezifischen Codes für seine JVM beigesteuert. Jetzt gibt Apple keine eigene Mac-spezifische JVM mehr frei. Sie haben jetzt die Wahl des JVM-Anbieters. Builds stammen aus der OpenJDK-Codebasis.
Sie finden den Quellcode unter: http://openjdk.Java.net
Beachten Sie, dass Oracle, das JCP und OpenJDK 2017 einen neuen Schnellzugplan angenommen haben, damit regelmäßig geplante Versionen von Java auf vorhersehbare Weise bereitgestellt werden.
In diesem Azul Systems-Blogbeitrag 2018-07 finden Sie viele Details: Eliminating Java Update Confusion von Simon Ritter .
Lesen Sie auch Java Is Still Free .
Eine ausführliche Liste der früheren und aktuellen JVM-Implementierungen finden Sie unter diese Seite bei Wikipedia .
Hier sind drei derzeit aktive Quellen, die ich kenne.
Oracle bietet JDK- und JRE-Installationsprogramme für mehrere Plattformen, einschließlich macOS.
Im Laufe der Jahre seit der Übernahme von Sun hat Oracle die besten Teile der beiden JVM-Engines HotSpot und JRocket kombiniert und zusammengeführt in das OpenJDK -Projekt, das als Grundlage für ihre eigenen Markenimplementierungen von Java dient.
Ihr neuer Geschäftsplan für 2018 sieht vor, eine Oracle-Implementierung von Java gegen eine Gebühr in der Produktion und ohne Kosten für die Verwendung in Entwicklung/Test/Demo bereitzustellen. Für die Unterstützung früherer Versionen ist ein kostenpflichtiges Supportprogramm erforderlich. Sie haben ihre Absicht erklärt, dass ihr Marken-Release mit dem OpenJDK-Release vergleichbar ist. Sie haben sogar ihre kommerziellen Add-Ons wie Flight Recorder an das OpenJDK-Projekt gespendet.
Azul Systems bietet eine Vielzahl von JVM-Produkten.
Zulu
-Linie basiert direkt auf OpenJDK und ist mit optionalen kostenpflichtigen Supportplänen kostenlos verfügbar.Zing
-Linie bietet kommerzielle JVM-Produkte, die mit alternativen technischen Implementierungen wie einem spezialisierten Garbage-Collector erweitert wurden.Beide Produktlinien bieten Installer für macOS an.
Ich verwende derzeit Zulu für Java 10.0.1 unter macOS High Sierra mit IntelliJ 2018.2 und Vaadin 8 . I von dieser Seite heruntergeladen . Übrigens finde ich nicht Java-bezogene Elemente, die in den Apple Systemeinstellungen App installiert sind.
AdoptOpenJDK ist eine von der Community geleitete Anstrengung, Binärdateien der OpenJDK-Quelle zu erstellen. Sie beabsichtigen, im Laufe der Zeit Updates anzubieten, die von Community-Mitgliedern gespendet wurden.
Das Projekt OpenJ9 ist eine weitere Implementierung der JVM-Engine, eine Alternative zu HotSpot .
Jetzt gesponsert von der Eclipse Foundation, mit Technologie und Unterstützung von IBM im Jahr 2017.
Für vorgefertigte Binärdateien verweisen sie auf das oben erwähnte AdoptOpenJDK -Projekt.
Die von Oracle oder Azul bereitgestellten Installationsprogramme sind äußerst einfach zu bedienen. Führen Sie einfach die Installations-App auf Ihrem Mac aus. Ein Fenster zeigt den Fortschritt der Installation an.
Wenn Sie fertig sind, überprüfen Sie Ihre JVM-Installation durch:
/Library/Java/JavaVirtualMachines/
, Um ein Element für die neue JVM anzuzeigen.Java -version
Ein, um die Marke und die Versionsnummer Ihrer JVM anzuzeigen.Hängen Sie das .dmg-Image im Finder ab, nachdem Sie den Erfolg überprüft haben. Mülle dann die heruntergeladene .dmg-Datei in den Papierkorb.
Ich habe Anwendungen, die sowohl Java 7 als auch 8 verwenden und ständig hin und her gehen müssen.
Ich verwende dieses Skript von Johan:
http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/
Sie können es jetzt beim Start einstellen 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
Wenn Sie mehrere Java-Versionen auf Ihrem Computer haben und diese zur Laufzeit dynamisch auswählen möchten, d. H. In meinem Fall 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 /etc/profile
-Inhalt ä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 folgendermaßen aussehen, wenn ich 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
Nach dem Speichern der Datei bitte ausführensource /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 Vorgang ist ähnlich, wenn sich Ihr Java-Ordner an verschiedenen Speicherorten befindet.
Führen Sie diese Befehle auf Mac High Sierra aus.
brew update
brew tap caskroom/versions
brew cask install Java8
und überprüfen Sie mit dem Befehl
Java -version
Am besten verwenden Sie den Brew-Paketmanager, aber den Befehl
brew cask install Java8
schlägt mit Fehler fehl:
Error: No available formula with the name "Java8"
.__ Verwenden Sie also
brew cask install caskroom/versions/Java8
Wie habe ich "caskroom/versions/Java8" gefunden?
brew cask search Java8
Mit brauen
brew install Caskroom/cask/Java
Annahme: Mac-Maschine und Sie haben bereits Homebrew installiert.
Fass installieren:
$ brew tap caskroom/cask
$ brew tap caskroom/versions
So installieren Sie aktuelles Java:
$ brew cask install Java
So installieren Sie Java 8:
$ brew cask install Java8
Wenn Sie mehrere Versionen installieren/verwalten möchten, können Sie 'jenv' verwenden:
Installieren und konfigurieren Sie jenv:
$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
Fügen Sie das installierte Java zu jenv hinzu:
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home
So sehen Sie das gesamte installierte Java:
$ jenv versions
Der obige Befehl gibt die Liste der installierten Java an:
* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
Oracle64-1.8.0.202-ea
Konfigurieren Sie die Java-Version, die Sie verwenden möchten:
$ jenv global Oracle64-1.6.0.39
So legen Sie Java_HOME fest:
$ jenv enable-plugin export
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)
P.S - Was ist ein Braufass? Homebrew-Cask erweitert Homebrew und löst den Aufwand für die Ausführung eines zusätzlichen Befehls - „Zum Installieren dieses Symbols ziehen…“ nach der Installation einer Anwendung mit Homebrew .
Anscheinend hat noch niemand SDK-Mann ( https://sdkman.io/ ) erwähnt.
SKD man erlaubt die Installation mehrerer Java-Versionen auf dem Mac und das einfache Wechseln zwischen diesen Versionen. Weitere Informationen finden Sie unter https://sdkman.io/usage .
Zum Beispiel:
$ sdk list Java
================================================================================
Available Java Versions
================================================================================
* 12.ea.20-open
11.0.1-zulu
> * 11.0.1-open
10.0.2-zulu
10.0.2-open
9.0.7-zulu
9.0.4-open
8.0.192-zulu
8.0.191-Oracle
+ 8.0.181-Oracle
7.0.181-zulu
1.0.0-rc-10-grl
1.0.0-rc-9-grl
1.0.0-rc-8-grl
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
$ sdk install Java 8.0.191-Oracle
$ sdk use Java 8.0.191-Oracle
Using Java version 8.0.191-Oracle in this Shell.
$ Java -version
Java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
$ sdk use Java 11.0.1-open
Using Java version 11.0.1-open in this Shell.
$ Java -version openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
```
Am einfachsten ist es, die dmg-Datei von der folgenden Site herunterzuladen und mit einem Doppelklick zu installieren
http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
suchen Sie nach verfügbaren JVMs im Basisverzeichnis
ls -al /Library/Java/JavaVirtualMachines
und aktualisieren Sie das .bash_profile mit der relevanten 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
Wenn Sie esNICHTfür den persönlichen Gebrauch verwenden, sollten Sie stattdessen OpenJDK verwenden, um potenzielle Rechtsstreitigkeiten von Oracle zu vermeiden.
brew cask install adoptopenjdk8
Versuchen :
brühfass Java 8 installieren, es wird das folgende Ergebnis geben
8tracksradiohelper adoptopenjdk8 amitv87-pip corretto8 icons8 vmware-fusion8 x48 zulu8
Geben Sie als Nächstes Folgendes ein: brew cask install adoptopenjdk8 ---- Java 8 wird auf dem Mac installiert.
Ich würde vorschlagen, den SDK-Mann zu verwenden, der die Version leicht ändern kann (temporär und dauerhaft) und andere SDKs bereitstellt. Ich benutze den SDK-Mann seit mehr als einem Jahr.