it-swarm.com.de

Wo ist Java_HOME auf MacOS Mojave (10.14) bis Lion (10.7)?

Java ist ein optionales Paket für die neuesten Versionen von macOS. 

Einmal installiert, sieht es so aus, als sei die Java_HOME Umgebungsvariable nicht richtig gesetzt .

518
Olivier Refalo

Wenn das optionale Paket Java oder Oracle JDK installiert ist, Durch Hinzufügen einer der folgenden Zeilen zu Ihrer Datei ~/.bash_profile wird die Umgebungsvariable entsprechend festgelegt.

export Java_HOME="$(/usr/libexec/Java_home -v 1.6)"
or
export Java_HOME="$(/usr/libexec/Java_home -v 1.7)"
or
export Java_HOME="$(/usr/libexec/Java_home -v 1.8)"

Update: -v Flag basierend auf Jilles van GurpAntwort hinzugefügt.

1007
Olivier Refalo

/usr/libexec/Java_home ist kein Verzeichnis, sondern eine ausführbare Datei. Es gibt das aktuell konfigurierte Java_HOME aus und ändert es nicht wirklich. Dafür gibt es die Java Preferences-App, die in meinem Fall kaputt ist und die JVM nicht richtig ändert. Es wird zwar die 1.7-JVM aufgelistet, aber ich kann dort ein- und ausschalten und ziehen und ziehen, was ich möchte, ohne die Ausgabe von /usr/libexec/Java_home tatsächlich zu ändern.

Selbst nachdem 1.7.0 u6 von Oracle auf Lion installiert und in den Voreinstellungen als Standard festgelegt wurde, wurde Apple 1.6 Java nach Hause zurückgegeben. Das einzige Problem, das eigentlich für mich funktioniert, ist, Java_HOME manuell einzustellen:

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

Zumindest auf diese Weise, wenn es von der Kommandozeile aus ausgeführt wird, wird 1.7 verwendet. /usr/libexec/Java_home besteht weiterhin auf 1.6.

Update: Java über die Befehlszeile unter OSX verstehen hat eine bessere Erklärung, wie dies funktioniert. 

export Java_HOME=`/usr/libexec/Java_home -v 1.7` 

ist der Weg, es zu tun. Beachten Sie, dass ein Update auf 1.8 gut funktioniert.

100
Jilles van Gurp

Für mich, Mountain Lion 10.8.2, funktioniert die am meisten gewählte Lösung nicht .. __ Ich installierte jdk 1.7 über Oracle und maven von Homebrew.

Meine Lösung ist aus der hadoop-env.sh-Datei von hadoop, die ich auch von Homebrew installiert habe .. Ich füge den folgenden Satz in ~/.bash_profile hinzu, und es funktioniert.

export Java_HOME="$(/usr/libexec/Java_home)"

Diese Lösung funktioniert auch für OS X Yosemite mit Java 1.8, das von Oracle installiert wird.

78
onpduo

Keine der obigen Antworten hat mir geholfen. Ich denke, alle Antworten sind für ältere OS X

Führen Sie für OS X Yosemite 10.10 die folgenden Schritte aus

Verwenden Sie Ihren bevorzugten Texteditor zum Öffnen: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

Fügen Sie der Datei die folgende Zeile hinzu und speichern Sie sie (: gefolgt von "x" für vim):

export Java_HOME=$(/usr/libexec/Java_home)

Geben Sie dann im Terminal die folgenden zwei Befehle ein, um die Ausgabe anzuzeigen:

$ source ~/.bash_profile

$ echo $Java_HOME

In der zweiten Zeile aktualisieren Sie den Inhalt der .bash_profile-Datei.

39
Giri

Update für Java 9 und einige nette Aliase.

In .bash_profile:

export Java_HOME8=`/usr/libexec/Java_home --version 1.8`
export Java_HOME9=`/usr/libexec/Java_home --version 9`

Beachten Sie, dass es sich bei der neuesten Version um 9 Und nicht um 1.9 Handelt.

Setze aktives Java:

export Java_HOME=$Java_HOME8
export PATH=$Java_HOME/bin:$PATH

Einige zusätzliche Aliasnamen zum Wechseln zwischen den verschiedenen Versionen:

alias j8='export Java_HOME=$Java_HOME8; export PATH=$Java_HOME/bin:$PATH'
alias j9='export Java_HOME=$Java_HOME9; export PATH=$Java_HOME/bin:$PATH'

Test im Terminal:

% j8
% Java -version
Java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% Java -version
Java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

EDIT: Update für Java 10

export Java_HOME10=`/usr/libexec/Java_home --version 10`
alias j10='export Java_HOME=$Java_HOME10; export PATH=$Java_HOME/bin:$PATH'

EDIT: Update für Java 11

export Java_HOME11=`/usr/libexec/Java_home --version 11`
alias j11='export Java_HOME=$Java_HOME11; export PATH=$Java_HOME/bin:$PATH'
30
Peter Keller

Das oben genannte hat bei Amazon EC2-Tools nicht funktioniert, da es bin/Java usw. unter Java_HOME erwartet. /System/Library/Frameworks/JavaVM.framework/Home hat funktioniert.

28
Cawflands

Für OS X können Sie Folgendes tun:

export Java_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/Java_home`
18
sufinawaz

Um die Ausführung von Visualgc unter Mac OS X Lion auszuführen, habe ich Folgendes verwendet:

export Java_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
14
EGHM

Folgendes hat für mich gearbeitet. Ich verwende ZSH auf OSX Yosemite, auf dem Java 8 installiert ist.

Der folgende Befehl /usr/libexec/Java_home gibt den Pfad zur JDK-Startseite aus:

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

In Ihrem ~/.zshrc

export Java_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
13
Hemanta

Neuere Oracle-JVMs wie 1.7.0_21-b12 scheinen hier installiert zu werden:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

10
Archie

Eine bessere (besser aufrüstbare) Möglichkeit ist die Verwendung der folgenden:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Dies sollte mit AWS funktionieren, da es unter Home bin hat

10
czarcrab

Mein Ansatz ist:

.bashrc

export Java6_HOME=`/usr/libexec/Java_home -v 1.6`
export Java7_HOME=`/usr/libexec/Java_home -v 1.7`
export Java_HOME=$Java6_HOME

# -- optional
# export PATH=$Java_HOME/bin:$PATH

Dies macht es sehr einfach, zwischen J6 und J7 zu wechseln

5
Mike Mitterer

für macOS Mojave 10.14.1 und Java 11.0.1 Ich habe das Profil als festgelegt

export Java_HOME=$(/usr/libexec/Java_home)

zur Bestätigung Folgendes in das Terminal eingeben:

$Java_HOME/bin/Java -version

Java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
5
Jiulong Zhao

Für Mac OS X 10.9 habe ich die neueste Version von JRE von Oracle installiert und dann Java_HOME auf /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home zurückgesetzt. 

Ich bin sicher, dass es einen besseren Weg gibt, aber mich zum Laufen gebracht hat. 

hughsmac: ~ hbrien $ echo $ Java_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Inhalt/Start

2
Hugh Brien

OSX Yosemite, ZSH und Java SE Runtime Environment 8 musste ich: 

$ Sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

und in ~/.zshrc Java_HOME in export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current" ändern

2
mmell

Ich habe das gleiche Problem, nachdem ich mein Mac OS aufgerüstet habe und folgendes für mich gearbeitet habe:

  1. cmd> vi ~/.bash_profile 

  2. Zeile für Java_HOME hinzufügen/aktualisieren: Export Java_HOME = "/ Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home"

  3. cmd> source ~/.bash_profile oder öffnen Sie ein neues Terminal

Ich denke, die jdk-Version kann sich unterscheiden, verwenden Sie einfach die Version, die Sie unter/Library/Java/JavaVirtualMachines/haben.

1
user1270392

Wenn Sie mehrere Versionen von JDK unter Mac OS X (Yosemite) benötigen, kann es hilfreich sein, Skripts für das automatische Umschalten zwischen diesen hinzuzufügen. 

Sie bearbeiten Ihr ~/.bash_profile und fügen Folgendes hinzu:

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${Java_HOME+x}" ]; then
    removeFromPath $Java_HOME
   fi
   export Java_HOME=`/usr/libexec/Java_home -v [email protected]`
   export PATH=$Java_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

Das Skript entfernt zunächst andere JDK-Versionen im -PFAD, damit sie nicht mit unserer neuen JDK-Version interferieren. Dann wird / usr/libexec/Java_home geschickt verwendet, ein Befehl, der installierte JDK-Versionen auflistet. Das Argument -v weist Java_home an, den Pfad des JDK mit der angegebenen Version zurückzugeben, z. B. 1.7. Wir aktualisieren auch den -PFAD, um auf das bin-Verzeichnis des neu gefundenen Java_HOME -Verzeichnisses zu verweisen. Am Ende können wir die Funktion einfach mit ausführen

setjdk 1.7

dadurch wird die zuletzt installierte JDK-Version des 1.7-Zweigs ausgewählt. Um eine bestimmte Version auszuwählen, können Sie sie einfach ausführen

setjdk 1.7.0_51

stattdessen. Führen Sie / usr/libexec/Java_home -V aus, um weitere Informationen zur Auswahl der Versionen zu erhalten.

P.S. Vergessen Sie nicht, source ~/.bash_profile nach dem Speichern zu speichern.

1
ZeKoU

Ich musste es explizit auf den exakten Pfad meines Macbooks einstellen. 

Schritte folgten:

  1. versuchen Sie es mit echo $Java_HOME (wenn es gesetzt ist, wird der Pfad angezeigt), falls nicht, suchen Sie mit Sudo find /usr/ -name *jdk danach.
  2. Bearbeiten Sie das Bash p mit - Sudo nano ~/.bash_profile
  3. Fügen Sie den genauen Pfad zu Java Home hinzu (mit dem Pfad aus Schritt 2 oben) export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. Speichern und schließen
  5. Überprüfen Sie Java_Home mit - echo $Java_HOME

Ich verwende MACOS MOJAVE - 10.14.2 (18C54) auf einem Macbook Air mit Java 8

1
Robin

Für Mac Yosemite 

JDK 1.7.0_xx verwendet

$ ls -ltar /usr/bin/Java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java

Java_HOME

/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
0
Mikey

Setzen Sie einfach Java_home der 1.8 jdk-Version in netbeans.conf-Datei:

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

kommentarzeile:

netbeans_jdkhome="path/to/jdk"

und setze den Pfad zu deiner 1.8 jdk, in meinem Fall:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

Dieser Ansatz ermöglicht es Ihnen, mehrere Jdk-Versionen auf Mac OS zu haben

0

Ich benutze Fish Shell auf High Sierra 10.13.4 und habe Java via Brew installiert.

Es wird nicht automatisch so eingerichtet, dass es korrekt auf meinem System, das ich ausführte, eingestellt wird:

set -U Java_HOME (/usr/libexec/Java_home)
0
chrismacp

Für Benutzer des Fish-Terminals auf dem Mac (ich glaube, es ist auch unter Linux verfügbar) sollte dies funktionieren:

set -Ux Java_8 (/usr/libexec/Java_home --version 1.8)
set -Ux Java_12 (/usr/libexec/Java_home --version 12)
set -Ux Java_HOME $Java_8       //or whichever version you want as default
0
Jaguar