493 Stimmen

Mac OS X und mehrere Java-Versionen

Wie kann ich auf MacOS zusätzliche Java-Installation ausführen? Ich habe jdk8 installiert und das funktioniert gut. Jetzt brauche ich jedoch eine jdk7-Installation für Entwicklungszwecke. Beim Versuch, die alte Version über die DMG-Datei zu installieren, erhalte ich eine Warnung, dass bereits eine neuere Version von Java installiert ist und das Installationsprogramm beendet wird.

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

   /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

Wie kann ich jdk7 zusätzlich zu dieser Installation installieren?

5voto

bdzzaid Punkte 788

Ich antworte spät und ich empfehle Ihnen wirklich, SDKMAN anstelle von Homebrew zu verwenden.

Mit SDKMAN können Sie ganz einfach verschiedene Versionen von JAVA auf Ihrem Mac installieren und von einer Version zur anderen wechseln.

Java auf Ihrem Mac

Sie können SDKMAN auch für ANT, GRADLE, KOTLIN, MAVEN, SCALA, usw... verwenden.

Um eine Version auf Ihrem Mac zu installieren, können Sie den Befehl sdk install java 15.0.0.j9-adpt ausführen cmd

5voto

Daniel Danielecki Punkte 5658

Ab 2023 hat brew install --cask zulu8 bei mir auf dem Apple Chip nicht funktioniert. Auch brew install openjdk@8 hat nicht funktioniert. Die einzige Lösung, die bei mir funktioniert hat, war brew install --cask adoptopenjdk8 und dann natürlich vim ~/.zshrc und innerhalb:

export JAVAC_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
alias javac8='export JAVA_HOME=$JAVAC_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'

Wechseln Sie vom Terminal aus mit javac8 zu einer frisch installierten (anderen) Version. Hinweis: Sie können andere Java-Versionen als ich haben, also ist es nur ein Beispiel.

Bearbeitung: Aus irgendeinem Grund dauert es einige Zeit, bis es aktiviert ist. Es scheint mir, dass ein Neustart des Laptops erforderlich ist.

5voto

Nícolas Schirmer Punkte 1414

Ich weiß, dass diese Frage bereits viele Antworten hat, aber ich möchte meine Lösung nur mit Temurin und bash teilen.

AdoptOpenJdk ist veraltet und deshalb verwende ich Temurin.


1. Laden Sie Temurin über die Mirrors oder einen Paketmanager herunter

$ brew install --cask temurin

Und für andere Versionen (wie Java 8):

$ brew tap homebrew/cask-versions

$ brew install --cask temurin8


2. Fügen Sie ein Bash-Skript in Ihr Bash-Profil ein

Öffnen Sie Ihre ~/.zshrc oder ~/.bash_profile (je nachdem, was Sie verwenden)

Und fügen Sie diesen Code hinzu:

set-jdk() {
    jdkversion=$1
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-"$jdkversion".jdk/Contents/Home;
    export PATH=$PATH:$JAVA_HOME/bin;
    java -version
}

3. Starten Sie Ihr Terminal neu und ändern Sie Ihre Java-Version

$ set-jdk N N ist die Java-Version, die Sie möchten und die bereits installiert ist

z.B. $ set-jdk 8 Um zu Java 8 / 1.8 zu wechseln


Einige Überlegungen:

  • Es wird nur die Java-Version in der Terminalsession beibehalten, in der Sie den set-jdk Befehl verwendet haben
  • Es wird die Java-Version nicht global gesetzt
  • Wenn Sie JAVA_HOME in ein anderes Skript/anwendung hinzufügen möchten, können Sie /Library/Java/JavaVirtualMachines/temurin-.jdk/Contents/Home einstellen (ändere das für die gewünschte Java-Version. Wie dieses JD-GUI Beispiel)

Genießen

1voto

Martin Punkte 448

Wenn Sie mehrere JDK-Versionen (bereits installiert) auf Mac M1 beibehalten möchten, fügen Sie zum einfachen Wechsel zwischen ihnen die folgenden Zeilen in Ihrer ~/.zshrc-Datei hinzu

alias jdk11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias jdk8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"

Jetzt können diese leicht wie folgt umgeschaltet werden

% ~
: jdk8
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Zulu 8.72.0.17-CA-macos-aarch64) (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Zulu 8.72.0.17-CA-macos-aarch64) (build 25.382-b05, mixed mode)
% ~
: java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (Zulu 8.72.0.17-CA-macos-aarch64) (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (Zulu 8.72.0.17-CA-macos-aarch64) (build 25.382-b05, mixed mode)
% ~
:
% ~
: jdk11
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment Corretto-11.0.15.9.1 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.15.9.1 (build 11.0.15+9-LTS, mixed mode)
% ~
: java -version
openjdk version "11.0.15" 2022-04-19 LTS

1voto

Ayush Pattnaik Punkte 1

Ich habe diesen Fehler auf meinem Mac M1 Air gelöst, indem ich einfach den Pfad der neuen JDK-Version in die Datei ~/.zshrc hinzugefügt habe.

export PATH="SPATH:/Users/ayushpattnaik/Documents/Deyeloper/flutter/bin"
export JAVA_HOME=nibrary/Jaya/JayaVirtualMachines/openjdk-11.jdk/Contents/Home

[ayushpattnaik@Ayushs—MacBook—Air ~ % java —version
openjdk version "11.0.18" 2023-01-17 
OpenJDK Runtime Environment Homebrew (build 11.0.18+0) 
OpenJDK 64—Bit Server VM Homebrew (build 11.0.18+0, mixed mode)

Ich habe mehrere JDKs in meinem /Library/Java/JavaVirtualMachines-Pfad. Ich kann also jede Version auswählen, die ich als Standard-Javapfad festlegen möchte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X