2015-10-09 11 views
12

Ich versuche eine JAVA-Anwendung auf meinem MAC OS X 10.11 (El Capitan) auszuführen.Warum kann ich den JAVA_HOME-Pfad auf meinem MAC OS X 10.11 nicht sehen?

Ich habe this link verwendet, um die JAVA_HOME auf meinem MAC OS X 10.11 zu setzen.

Ich bin in der Lage, die folgenden Befehle auszuführen:
java -version
die

jedoch java, wenn ich auf dem Terminal-Anwendung auf MAC gehen und geben Sie echo $ JAVA_HOME, ich sehe nichts. Warum ist das? Bedeutet das, dass mein JAVA_HOME nicht richtig eingestellt ist?

Antwort

31

Wo es

Ok, zunächst zu definieren, müssen wir wo zu setzen JAVA_HOME deutlich machen.

Vereinfacht können Sie es in zwei Dateien definieren: entweder ~/.bashrc oder ~/bash_profile. Nach Standard wird der erste für sogenannte "interaktive Nicht-Login-Shells" ausgeführt, während letzterer für "Login-Shells" verwendet wird. Eine "Login-Shell" ist genau das, was Sie erwarten würden: Eine Shell, die nach der Anmeldung über die Befehlszeile gestartet wird. Eine "interaktive Nicht-Login-Shell" ist eine Shell, die zum Beispiel innerhalb einer GUI gestartet wird. Daher sollten wir unsere Exportaussage in ~/.bashrc setzen.

Randnotiz: Während die Anwendung "Terminal" von OS X beide erwähnten Dateien liest, ist dies nicht das Standardverhalten und sollte daher nicht als solches behandelt werden. Und deshalb habe ich eine Erklärung geschrieben.

Was definieren Sie

Sie benötigen JAVA_HOME in der ~/.bashrc-Datei zu exportieren, so dass jedes Mal, wenn eine Schale geöffnet wird, wird die Variable gesetzt ist.

Unter OS X sind die Java Development Kits und Runtime Environments schon lange unter /Library/Java/JavaVirtualMachines/ gespeichert. Schauen Sie sich dort um. Dies ist, wie es bei meiner Maschine aussieht:

/Library/Java/JavaVirtualMachines/ 
├── jdk1.7.0_45.jdk 
├── jdk1.8.0_20.jdk 
├── jdk1.8.0_25.jdk 
└── jdk1.8.0_51.jdk 

Die Unterordner sehen ähnlich wie diese

jdk1.7.0_45.jdk/ 
└── Contents 
    ├── Home 
    ├── Info.plist 
    └── MacOS 

Und da haben wir es. Also, wenn Sie auf das JDK 1.7.0_45 zeigen wollte, dann würden Sie die folgende Anweisung setzen in Ihr .bashrc

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home" 

Um sicherzustellen, dass die richtigen Binärdateien für die Java-Version genannt werden, auch sollten Sie fügen Sie den folgenden Irgendwo nach der obigen Aussage:

+0

Sie haben die erste Frage, die hier gestellt wurde, nicht beantwortet. –

+0

@PeterVerhas Oh, ich habe implizit: Es ist nicht verfügbar, da es nicht in der richtigen dotfile exportiert wurde. Damit eine Umgebungsvariable verfügbar ist, muss sie eingestellt werden;) –

+0

FYI - Dies funktioniert nicht bei High Sierra. Ich musste jdk1.8 angeben und java 9 installiert haben. Die einzige Lösung war, Java 9 zu löschen. – eimmer

0

Wenn Sie jdk 1.6 aus irgendeinem Grund verwenden möchten, die Apple nicht mehr unterstützt. Es wird entfernt, nachdem Sie Mac OS aktualisiert haben. Sie können nach wie vor JDK 1.6 auf dieser Seite erhalten: https://support.apple.com/kb/DL1572?locale=zh_CN

Nachdem Sie jdk wieder 1.6 installieren, um zu bestätigen, erinnern das richtige Verzeichnis für die Systemvariable $ JAVA_HOME Export in ~/.bash_profile etc. Für mich ist es „/ Bibliothek/Java/JavaVirtualMachines/1.6.0.jdk/Inhalt/Startseite ".

0

Sie werden viele Antworten finden, wie man JAVA_HOME in OSX einstellt, aber es ist schwer eine Antwort auf die Frage zu finden, ob die Einstellung JAVA_HOME überhaupt notwendig ist.

Warum ist das? Bedeutet das, dass mein JAVA_HOME nicht richtig eingestellt ist?

Unter OSX ist das Festlegen der Umgebungsvariable JAVA_HOME optional. Die JRE- und JDK-Installationsprogramme sehen nicht vor, dass JAVA_HOME festgelegt wird. JAVA_HOME ist also nicht in Ordnung.