Jak ustawić zmienną środowiskową JAVA_HOME w systemie Mac OS X 10.9?


145

Właśnie kupiłem nowy MacBook Pro.

To jest mój pierwszy MAC w historii i nadal próbuję opanować nawigację.

W każdym razie jestem nowy w Javie i ćwiczyłem na moim komputerze z systemem Windows, zanim na stałe umarł.

Teraz, gdy jestem na tym MAC, zainstalowałem mój JDK i teraz muszę ustawić JAVA_HOMEzmienną środowiskową.

Nie mam pojęcia, co robić.

Próbowałem postępować zgodnie z niektórymi z tych przewodników i nie zaszedłem zbyt daleko.

  1. Mkyong.com: Jak ustawić zmienną JAVA_HOME w Mac OSX

  2. YouTube: Jak ustawić zmienne środowiskowe w systemach Mac, Linux, Solaris, Rhel

  3. YouTube: jak ustawić zmienne środowiskowe na komputerze Mac

Udało mi się zlokalizować terminal i myślę, że utworzyłem kilka plików. Otrzymuję takie wiadomości:


(1) Inny program może edytować ten sam plik. W takim przypadku należy uważać, aby nie skończyć z dwoma różnymi wystąpieniami tego samego pliku podczas wprowadzania zmian. Zakończ lub kontynuuj ostrożnie.


(2) Sesja edycji tego pliku uległa awarii. W takim przypadku użyj ": recovery" lub "vim -r /Users/Erwin/.bash_profile", aby odzyskać zmiany (zobacz ": help recovery"). Jeśli już to zrobiłeś, usuń plik wymiany „/Users/Erwin/.bash_profile.sw p”, aby uniknąć tego komunikatu.

Czy ktoś może powiedzieć, jak krok po kroku ustawić Javę w środowisku Mac OSX?




Odpowiedzi:


342

Dosłownie wszystko, co musisz zrobić, to:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile

i uruchom ponownie powłokę.

Jeśli masz zainstalowanych wiele wersji JDK i chcesz, aby była to konkretna, możesz użyć -vflagi, aby to java_homepolubić:

echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.7)" >> ~/.bash_profile

1
Kiedy mówisz „powłoka”, masz na myśli, że zamykam okno terminala i otwieram je ponownie? Czy to na stałe dodaje zmienną środowiskową dla mojego jdk?
islander_zero

1
Tak, o to mi chodzi. I tak, to doda zmienną dla wszystkich powłok logowania dla twojego użytkownika (tj. Prawie wszystkie okoliczności, w których byś tego chciał)
Adrian Petrescu

13
Myślę, że zamiast restartowania terminala, jeśli to zrobisz source ~/.bash_profile, zadziałaby, prawda?
Shobhit Puri

2
@ShobhitPuri Tak, byłoby, chciałem tylko uprościć sprawę pytającego.
Adrian Petrescu,

4
echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.7)" >> ~/.bash_profileJeśli potrzebujesz określonej wersji. 1.7 w tym przypadku.
sebastian

26

Zrobiłem to przez umieszczenie

export JAVA_HOME=`/usr/libexec/java_home`

(backtics) w moim .bashrc. Zobacz mój komentarz do odpowiedzi Adriana.


17

W systemie Mac OSX 10.5 lub nowszym firma Apple zaleca ustawienie $JAVA_HOME variable to /usr/libexec/java_home, po prostu eksportuj $JAVA_HOME in file ~/. bash_profilelub ~/.profile.

Otwórz terminal i uruchom poniższe polecenie.

$ vim .bash_profile

export JAVA_HOME=$(/usr/libexec/java_home)

zapisz i wyjdź z edytora vim, a następnie uruchom polecenie źródła na .bash_profile

$ source .bash_profile

$ echo $JAVA_HOME

/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

12

Ustaw zmienną środowiskową $ JAVA_HOME w najnowszym lub starszym systemie Mac OSX.

Pobierz i zainstaluj zainstaluj JDK

  1. Najpierw zainstaluj JDK
  2. Otwórz terminal, sprawdź wersję java

$ java -version

Ustaw zmienną środowiskową JAVA_HOME

  1. Otwórz plik .zprofile

$ open -t .zprofile

Lub stwórz . zprofile plik

$ open -t .zprofile

  1. napisz w .zprofile

export JAVA_HOME=$(/usr/libexec/java_home)

Zapisz .zprofile i zamknij plik bash, a następnie napisz w terminalu, aby działał idealnie .

$ source .zprofile

Test konfiguracji w terminalu

$ echo $JAVA_HOME  
/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

2
Miałem też pytanie, czym właściwie jest "/ usr / libexec / java_home". Odpowiedź: medium.com/zendesk-engineering/…
ekar

2
/ usr / libexec / java_home to najprostszy w utrzymaniu sposób ustawienia JAVA_HOME w systemie macOS. Możesz użyć java_home, aby: znaleźć wszystkie zainstalowane zestawy JDK.
Shomu

to działa dla mnie na Macu z 2019 roku z systemem Catalina w 2020 roku. Zaakceptowana i najbardziej pozytywna odpowiedź nie. Po pierwsze, profil basha jest teraz .zprofile, również exportzawartość polecenia w zaakceptowanej odpowiedzi nie działała dla mnie, ale tak się stało.
cryanbhu

8

Zaleca się sprawdzenie domyślnej powłoki terminala przed ustawieniem zmiennej środowiskowej JAVA_HOME za pomocą następujących poleceń:

$ echo $SHELL
/bin/bash

Jeśli twoim domyślnym terminalem jest / bin / bash (Bash), powinieneś użyć metody @Adrian Petrescu .

Jeśli twoim domyślnym terminalem jest / bin / zsh (powłoka Z), powinieneś ustawić te zmienne środowiskowe w pliku ~ / .zshenv o następującej zawartości:

export JAVA_HOME="$(/usr/libexec/java_home)"

Podobnie, każdy inny typ terminala niewymieniony powyżej, powinieneś ustawić zmienną środowiskową w odpowiednim pliku env terminala.


4

Mam to działające, dodając do ~ / .profile. W jakiś sposób po aktualizacji do wersji beta El Capitan nie działało, mimo że JAVA_HOME został zdefiniowany w .bash_profile.

Jeśli są jacyś użytkownicy wersji beta El Capitan, spróbuj dodać do .profile


2
Jaka jest różnica między .profile i .bash_profile?
Igor Ganapolsky

3
Pomysł jest taki, że .profile działa dla wszystkich powłok (sh, zsh, cokolwiek); .bash_profile, tylko dla powłok bash.
John L4


0

Ponieważ używam openjdk zarządzanego z sdkman, dodałem

sudo ln -sfn /path/to/my/installed/jdk/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Dodanie tego do systemu pozwala java_homerozpoznać zainstalowaną wersję Javy, nawet jeśli nie jest ona zainstalowana za pośrednictwem standardowych pakietów

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.