Gdzie znajduje się JAVA HOME na macOS Sierra (10.12), El Capitan (10.11), Yosemite (10.10), Mavericks (10.9), Mountain Lion (10.8) lub OSX Lion (10.7)?
Java jest opcjonalnym pakietem w najnowszych wersjach systemu macOS.
Jednak po zainstalowaniu wydaje się, że zmienna środowiskowa JAVA_HOMEjest nie ustawiona poprawnie.
21 answers
Z zainstalowanym opcjonalnym pakietem Java lub Oracle JDK , dodanie jednej z następujących linii do ~/.plik bash_profile odpowiednio ustawi zmienną środowiskową.
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: added - V flag based on odpowiedź .
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:45
/usr/libexec/java_home
nie jest katalogiem lecz wykonywalnym. Wyświetla aktualnie skonfigurowany JAVA_HOME i nie zmienia go. Do tego służy aplikacja Java Preferences, która w moim przypadku wydaje się zepsuta i właściwie nie zmienia JVM poprawnie. Wyświetla listę 1.7 JVM, ale mogę przełączać / rozłączać i przeciągać i upuszczać wszystko, co chcę, bez zmieniania wyjścia /usr/libexec/java_home
.
Nawet po zainstalowaniu 1.7.0 u6 z Oracle na Lionie i ustawieniu go jako domyślnego w preferencjach, to nadal wrócił Apple 1.6 java home. Jedyną poprawką, która faktycznie działa dla mnie, jest ręczne ustawienie JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Przynajmniej w ten sposób po uruchomieniu z linii poleceń użyje 1.7. /usr/libexec/java_home
nadal nalega na 1.6.
Aktualizacja: zrozumienie Javy z wiersza poleceń na OSX ma lepsze wyjaśnienie, jak to działa.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
Jest sposób, aby to zrobić. Uwaga, aktualizacja do wersji 1.8 działa dobrze.
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-12-10 18:39:51
Dla mnie Mountain Lion 10.8.2, rozwiązanie najczęściej głosowane nie działa. Zainstalowałem jdk 1.7 przez Oracle i maven z homebrew.
Moje rozwiązanie pochodzi z hadoop-env.sh plik hadoop, który zainstalowałem również z homebrew. Dodaję poniższe zdanie w~/.bash_profile i działa.
export JAVA_HOME="$(/usr/libexec/java_home)"
To rozwiązanie działa również dla OS X Yosemite z Javą 1.8 zainstalowaną przez Oracle.
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-01-13 13:57:52
Żadna z powyższych odpowiedzi mi nie pomogła. Przypuszczam, że wszystkie odpowiedzi są dla starszych OS X
Dla OS X Yosemite 10.10, wykonaj następujące kroki
Użyj ulubionego edytora tekstu, aby otworzyć: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Dodaj następujący wiersz w pliku i zapisz go (: po którym następuje "x" dla Vima):
export JAVA_HOME=$(/usr/libexec/java_home)
Następnie w terminalu wpisz następujące dwa polecenia, aby zobaczyć wyjście:
$ source ~/.bash_profile
$ echo $JAVA_HOME
W drugiej linii aktualizujesz zawartość pliku .bash_profile
.
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-08-30 12:42:39
Powyższe nie zadziałało dla mnie z narzędziami EC2 Amazona, ponieważ oczekuje bin/java
itp. pod spodem JAVA_HOME
. Zadziałało.
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
2011-11-29 14:07:47
Aktualizacja dla Javy 9 i jakiś fajny alias.
W .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Zauważ, że dla najnowszej wersji jest to 9
, a nie 1.9
.
Set active Java:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Jakiś dodatkowy alias do przełączania między różnymi wersjami:
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 w terminalu:
% 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 for Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10` alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
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
2018-07-14 11:03:19
Dla OS X można zrobić:
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
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-08-08 17:10:27
Na Mac OS X Lion, aby ustawić visualgc do uruchomienia, użyłem:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
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
2012-06-05 00:20:10
Następujące zadziałały dla mnie. Używam ZSH na OSX Yosemite z zainstalowaną Javą 8.
Następujące polecenie /usr/libexec/java_home
emituje ścieżkę do JDK home:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
W Twoim ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
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
2014-10-28 02:39:22
Lepszym (bardziej rozbudowywalnym) sposobem jest użycie:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
To powinno działać z AWS również ponieważ ma bin
pod domem
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
2012-10-11 15:04:52
Nowsze Oracle JVMs takie jak 1.7.0_21-b12 wydają się instalować tutaj:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
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-03 16:43:45
Moje podejście to:
.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
To sprawia, że bardzo łatwo przełączać się między J6 i J7
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-10-16 10:45:16
Dla Mac OS X 10.9 zainstalowałem najnowszą wersję JRE od Oracle, a następnie zresetowałem JAVA_HOME do / Library/Java/JavaVirtualMachines / jdk1.7.0_45.jdk / Contents / Home.
Jestem pewien, że jest lepszy sposób, ale mnie uruchomił.
Hughsmac: ~ hbrien$ echo $JAVA_HOME / Library / Java / JavaVirtualMachines / jdk1.7.0_45.jdk / Contents / Home
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-10-25 23:36:39
OSX Yosemite, ZSH i Java SE Runtime Environment 8, musiałem:
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin
I w ~/.zshrc Zmień JAVA_HOME na
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
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
2014-11-19 19:26:27
Mam ten sam problem po uaktualnieniu mojego Mac OS i następujące działało dla mnie:
-
Cmd > vi ~/.bash_profile
-
Dodaj / zaktualizuj wiersz dla JAVA_HOME: export JAVA_HOME= " / Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home "
-
Cmd > source ~/.bash_profile lub Otwórz nowy terminal
Myślę, że wersja jdk może się różnić, więc po prostu użyj wersji, którą masz pod /Library / Java / JavaVirtualMachines /
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-04-23 17:33:28
Jeśli potrzebujesz mieć wiele wersji JDK pod Mac OS X( Yosemite), pomocne może być dodanie skryptów do automatycznego przełączania między nimi.
To co robisz to edytowanie swojego ~/.bash_profile i dodać:
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 $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
Skrypt najpierw usuwa inne wersje JDK w ścieżce , aby nie kolidowały z naszą nową wersją JDK. Następnie sprytnie wykorzystuje / usr / libexec / java_home, które jest poleceniem, które wyświetla zainstalowane wersje JDK. Argument - v mówi java_home aby zwrócił ścieżkę JDK z dostarczoną wersją, na przykład 1.7. Aktualizujemy również ścieżkę , aby wskazać katalog bin nowo znalezionego katalogu JAVA_HOME. Na końcu możemy po prostu wykonać funkcję używając
setjdk 1.7
Który wybiera najnowszą zainstalowaną wersję JDK gałęzi 1.7. Aby wybrać konkretną wersję, możesz po prostu wykonać
setjdk 1.7.0_51
Zamiast tego. Bieg / usr / libexec / java_home-v aby uzyskać więcej informacji na temat wyboru wersji.
P. S. nie zapomnij źródło~/.bash_profile po zapisaniu.
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
2014-11-10 07:50:04
Dla Mac Yosemite,
JDK 1.7. 0_xx używa
$ 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
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-06-16 16:14:46
Używam Fish shell Na High Sierra 10.13.4 i zainstalowałem Javę przez Brew.
Nie jest ustawiany automatycznie więc aby ustawić go poprawnie w moim systemie uruchamiam:
set -U JAVA_HOME (/usr/libexec/java_home)
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
2018-06-06 13:39:55
Ta odpowiedź jest związana z Lwem górskim , a nie z Lwem. Musiałem to zrobić dla narzędzi wiersza poleceń AWS. Zgodnie z AWS docs, running which java
zwraca /usr/bin/java
.
Więc ustawiłem JAVA_HOME=/usr
w moim .bashrc
.
Najwyraźniej /usr/bin/java
jest dowiązaniem symbolicznym do {[5] } co sprawia, że wszystko działa.
Update
Jak wspomniano w komentarzu poniżej, ta wartość JAVA_HOME
nie jest idealnym rozwiązaniem, gdy zmienna środowiskowa JAVA_HOME
ma być używana przez rzeczy inne niż narzędzia wiersza poleceń AWS. Działa dobrze dla narzędzi wiersza poleceń AWS, jak podano w ich dokumentach.
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
2012-10-29 07:55:12
Każdy, kto używa AUSKEY z australijskiego urzędu skarbowego (ATO), powinien odinstalować AUSKEY. To rozwiązało moje problemy z JAVA_HOME.
Nie jest już wymagany dla użytkowników komputerów MAC. Yah!
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-04 10:14:42
Dla użytkowników komputerów mac . java 8 powinna dodawać
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Java 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
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-05-13 14:53:48