Co powinienem ustawić JAVA HOME na OSX

Wiele aplikacji Java, które używają skryptów powłoki do konfigurowania środowiska, używa zmiennej środowiskowej JAVA_HOME, aby uruchomić poprawną wersję Javy, zlokalizować Jar JRE i tak dalej.

Na OSX 10.6, następujące ścieżki wydają się być ważne dla tej zmiennej

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

Niektóre z nich są dowiązaniami symbolicznymi do bieżącej maszyny wirtualnej (zdefiniowanej w okienku preferencji Java).

Ale który z nich powinien być używany-czy jest to w porządku, aby użyć któregokolwiek z nich?

Author: Zearin, 2009-08-28

13 answers

Czy Snow Leopard nadal ma /usr/libexec/java_home? W wersji 10.5 po prostu ustawiłem JAVA_HOME na wyjście tego polecenia, które powinno dać Ci ścieżkę Javy określoną w Twoich preferencjach Javy. Oto fragment mojego pliku .bashrc, który ustawia tę zmienną:

export JAVA_HOME=$(/usr/libexec/java_home)
Nie doświadczyłem żadnych problemów z tą techniką.

Czasami muszę zmienić wartość JAVA_HOME na wcześniejszą wersję Javy. Na przykład JEDEN program, który prowadzę, wymaga 32-bitowej Javy 5 na OS X, więc podczas korzystania z tego program, ustawiam JAVA_HOME uruchamiając:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)

Dla tych z Was, którzy nie mają java_home na swojej drodze dodaj to tak.

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home
 786
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-06 16:48:03

Również, to jest interesujące, aby ustawić swoją ścieżkę do odzwierciedlenia JDK. Po dodaniu JAVA_HOME (co można zrobić za pomocą przykładu podanego przez 'mipadi'):

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

Dodaj także do~/.profil:

export PATH=${JAVA_HOME}/bin:$PATH

P. S.: dla OSX, generalnie używam .profil w katalogu domowym zamiast .bashrc

 35
Author: lucasarruda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-08 18:55:59

Obecnie Java wydaje się być instalowana w /Library/Java / JavaVirtualMachines

 14
Author: Nicolas Mommaerts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-07 21:13:17

Mam MAC OS X(Sierra) 10.12.2 .

Ustawiłem JAVA_HOME do pracy na React Native (dla aplikacji na Androida), wykonując następujące kroki.

  • Otwórz Terminal (polecenie + R, wpisz Terminal, naciśnij ENTER).

  • Dodaj następujące wiersze do ~/.bash_profile . export JAVA_HOME=$(/usr/libexec/java_home)

  • Teraz uruchom następujące polecenie. source ~/.bash_profile

  • Możesz sprawdzić dokładną wartość JAVA_HOME, wpisując następujące dowództwo. echo $JAVA_HOME

Zwrócona wartość(Wyjście) będzie podobna do poniższej. /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

To wszystko.

 14
Author: hygull,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 06:02:50

Jestem na Mac OS 10.6.8

Najprostszym rozwiązaniem działa dla mnie jest po prostu umieścić w

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

Aby sprawdzić, czy to działa, włóż

$ echo $JAVA_HOME

Pokazuje

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Możesz również przetestować

$ which java
 10
Author: Rae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-12 20:40:15

Używam /Library/Java/Home. Sposób działania panelu preferencje powinien być zgodny z preferowaną wersją.

 9
Author: Clint,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-28 19:23:41

To już nie działa w YOSEMITE dla aplikacji graficznych! Jak zaćmienie, czy cokolwiek zaczęło się od Spotlight. (.bash_profile,conf działa tylko dla sesji terminala.) Przed uruchomieniem eclipse, wystarczy otworzyć okno terminala i wydać następujące polecenie:

Launchctl setenv JAVA_HOME / Library / Java / JavaVirtualMachines/jdk1.7. 0_45.jdk / Contents / Home

(ze ścieżką instalacji! Być może działa z $(/usr / libexec / java_home) zamiast pełnej ścieżki też.)

Zobacz cały doskonały artykuł o stałym rozwiązaniu tutaj: Ustawianie zmiennych środowiskowych za pomocą launchd.conf nie działa już w OS X Yosemite/El Capitan / macOS Sierra?

 6
Author: Pálossy László,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:48

Znalazłem ten stos aby pomóc, miałem ten sam problem i mogłem naprawić:

Moja ścieżka Javy była tutaj:

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

I trzeba było włożyć do mojego .bash_profile:

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

Hope help

 2
Author: Shirow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:29

Jak zauważają inne odpowiedzi, poprawnym sposobem znalezienia katalogu domowego Javy jest użycie /usr/libexec/java_home.

Oficjalna dokumentacja tego jest w techniczne Qa1170: ważne katalogi Java na OS X: https://developer.apple.com/library/mac/qa/qa1170/_index.html

 1
Author: Kristopher Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-27 15:01:35

Dla mnie maven wydaje się działać poza .mavenrc Plik:

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc
Jestem pewien, że ja też to odebrałem, tylko nie pamiętam gdzie.
 1
Author: maksimov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 19:22:35

Pomijanie konfiguracji terminala skoro wspomniałeś o aplikacjach, ustawiona stała zmienna środowiskowa systemu (działa dla macOS Sierra; powinna działać również dla El Capitan):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(spowoduje to ustawienie JAVA_HOME na najnowszy 1.8 JDK, możliwe, że przeszedłeś przez aktualizacje serveral np. javac 1.8.0_101, javac 1.8.0_131)
Oczywiście Zmień 1.8 na 1.7 lub 1.6(naprawdę?) w zależności od potrzeb i systemu

 1
Author: ericn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-11 10:04:43

Utwórz plik ~/.mavenrc

Następnie wklej to do pliku

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

Test

mvn -v

 0
Author: KhaledMohamedP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 18:07:17

Dla użytkowników muszli ryb, użyj czegoś takiego jak: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

 -1
Author: Yichuan Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 01:01:25