Java jest opcjonalnym pakietem w najnowszych wersjach systemu macOS.
Jednak po zainstalowaniu wygląda na to, że zmienna środowiskowa JAVA_HOME nie jest ustawiona poprawnie .
Java jest opcjonalnym pakietem w najnowszych wersjach systemu macOS.
Jednak po zainstalowaniu wygląda na to, że zmienna środowiskowa JAVA_HOME nie jest ustawiona poprawnie .
Odpowiedzi:
Po zainstalowaniu opcjonalnego pakietu Java lub Oracle JDK dodanie jednego z poniższych wierszy do pliku ~ / .bash_profile spowoduje odpowiednie ustawienie zmiennej środowiskowej.
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)"
Aktualizacja: dodano flagę -v na podstawie odpowiedzi Jillesa van Gurpa .
/usr/libexec/java_home
nie jest katalogiem, ale plikiem wykonywalnym. Wyprowadza obecnie skonfigurowany JAVA_HOME i tak naprawdę go nie zmienia. Do tego służy aplikacja Java Preferences, która w moim przypadku wydaje się zepsuta i właściwie nie zmienia poprawnie JVM. Wyświetla listę JVM 1.7, ale mogę przełączać / rozłączać i przeciągać i upuszczać tam wszystko, czego chcę, bez zmiany 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, nadal zwrócił Apple 1.6 Java Home. Jedyną poprawką, która faktycznie dla mnie działa, jest ręczne ustawienie JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
Przynajmniej w ten sposób, gdy zostanie uruchomiony z wiersza poleceń, użyje 1.7. /usr/libexec/java_home
nadal nalega na 1.6.
Aktualizacja : Zrozumienie Java z wiersza poleceń w OSX ma lepsze wyjaśnienie, jak to działa.
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
jest na to sposób. Uwaga: aktualizacja do wersji 1.8 działa dobrze.
Dla mnie Mountain Lion 10.8.2 najczęściej głosowane rozwiązanie nie działa. Zainstalowałem jdk 1.7 przez Oracle i maven z homebrew.
Moje rozwiązanie pochodzi z pliku hadoop-env.sh hadoop, który również zainstalowałem z homebrew. Dodaję zdanie poniżej w ~ / .bash_profile i to działa.
export JAVA_HOME="$(/usr/libexec/java_home)"
To rozwiązanie działa również w systemie OS X Yosemite z Javą 1.8 zainstalowaną z Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Żadna z powyższych odpowiedzi nie pomogła mi. Przypuszczam, że wszystkie odpowiedzi są dla starszychOS X
W przypadku systemu OS X Yosemite 10.10 wykonaj następujące kroki
Użyj swojego ulubionego edytora tekstu, aby otworzyć: ~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
Dodaj następujący wiersz do pliku i zapisz go (: następnie „x” dla vima):
export JAVA_HOME=$(/usr/libexec/java_home)
Następnie w terminalu wpisz następujące dwa polecenia, aby wyświetlić dane wyjściowe:
$ source ~/.bash_profile
$ echo $JAVA_HOME
W drugim wierszu aktualizujesz zawartość .bash_profile
pliku.
Aktualizacja dla Java 9 i kilka porządnych aliasów.
W .bash_profile
:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Zauważ, że w najnowszej wersji tak jest 9
i nie 1.9
.
Ustaw aktywną Javę:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Niektóre dodatkowe aliasy 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)
EDYCJA: Aktualizacja dla Java 10
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
EDYCJA: Aktualizacja dla Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Powyższe nie działało dla mnie z narzędziami Amazon EC2, ponieważ spodziewa się bin/java
itp JAVA_HOME
. Poniżej . /System/Library/Frameworks/JavaVM.framework/Home
zadziałało.
W systemie Mac OS X Lion, aby ustawić uruchamianie visualgc, użyłem:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? polecenie / usr / libexec / java_home zwraca /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Poniższe działało dla mnie. Używam ZSH na OSX Yosemite z zainstalowaną Javą 8.
Następujące polecenie /usr/libexec/java_home
emituje ścieżkę do strony głównej JDK:
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
W twojej ~/.zshrc
,
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Lepszym (bardziej rozbudowalnym) sposobem jest użycie następujących opcji:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Powinno to działać również z AWS, ponieważ znajduje się bin
pod Home
Wydaje się, że instalują się tutaj nowsze maszyny JVM Oracle, takie jak 1.7.0_21-b12:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
narzędzie zwraca błąd dla tych wersji Java.
dla macOS Mojave 10.14.1 i JAVA 11.0.1 Ustawiłem profil jako
export JAVA_HOME=$(/usr/libexec/java_home)
wpisz w terminalu, aby potwierdzić:
$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)
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
Ułatwia to przełączanie między J6 i J7
Musiałem wyraźnie ustawić tę ścieżkę na mojej MacBooku Air.
Kolejne kroki:
echo $JAVA_HOME
(jeśli jest ustawiony, pokaże ścieżkę), jeśli nie, spróbuj go wyszukać za pomocąsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Używam MACOS MOJAVE - 10.14.2 (18C54) na Macbooku Air z JAVA 8
W systemie Mac OS X 10.9 zainstalowałem najnowszą wersję środowiska JRE z bazy danych 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 zmusiłem mnie do działania.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
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
iw ~ / .zshrc zmień JAVA_HOME na
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"
Ten sam problem wystąpił po aktualizacji systemu Mac OS i działało dla mnie:
cmd> vi ~ / .bash_profile
Dodaj / zaktualizuj wiersz dla JAVA_HOME: eksportuj 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 w / Library / Java / JavaVirtualMachines /
Jeśli potrzebujesz wielu wersji JDK pod Mac OS X (Yosemite), pomocne może być dodanie skryptów do automatycznego przełączania między nimi.
Aby edytować profil ~ / .bash_profile i dodać następujące:
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 z PATH , aby nie kolidowały z naszą nową wersją JDK. Następnie w pewien sprytny sposób wykorzystuje / usr / libexec / java_home, która jest poleceniem wyświetlającym listę zainstalowanych wersji JDK. -V argumentem mówi JAVA_HOME , aby powrócić na ścieżkę JDK w wersji dostarczonej na przykład 1.7. Aktualizujemy również ŚCIEŻKĘ, aby wskazywała katalog bin nowo znalezionego katalogu JAVA_HOME . Na koniec możemy po prostu wykonać funkcję za pomocą
setjdk 1.7
który wybiera najnowszą zainstalowaną wersję JDK oddziału 1.7. Aby wybrać konkretną wersję, wystarczy ją uruchomić
setjdk 1.7.0_51
zamiast. Uruchom / usr / libexec / java_home -V aby uzyskać więcej informacji na temat wyboru wersji.
PS Nie zapomnij o źródłowym ~ / .bash_profile po jego zapisaniu.
Ta odpowiedź dotyczy Lwa Górskiego, a nie Lwa. Musiałem to zrobić dla narzędzi wiersza polecenia AWS. Według dokumentów AWS , uruchamianie which java
zwraca/usr/bin/java
.
Tak, ja ustawić JAVA_HOME=/usr
w moim.bashrc
.
Najwyraźniej /usr/bin/java
jest to symboliczny link, /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
dzięki któremu wszystko działa.
Aktualizacja
Jak wspomniano w komentarzu poniżej, ta JAVA_HOME
wartość nie jest idealnym rozwiązaniem, gdy JAVA_HOME
zmienna środowiskowa ma być używana przez rzeczy inne niż Narzędzia wiersza polecenia AWS. Działa to dobrze w przypadku narzędzi wiersza polecenia AWS, jak podano w ich dokumentach.
W przypadku systemu Mac Yosemite
Używa JDK 1.7.0_xx
$ 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
Wystarczy ustawić java_home wersji 1.8 jdk w netbeans.conf
pliku:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
linia odkomentowania:
netbeans_jdkhome="path/to/jdk"
i ustaw ścieżkę do twojego 1.8 jdk, w moim przypadku:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
Podejście to zakłada posiadanie kilku wersji JDK na Mac OS
Dla użytkowników terminali Fish na Macu (myślę, że jest on również dostępny w systemie Linux), powinno to działać:
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
dla użytkowników komputerów Mac. java 8 powinna dodać
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