Na Mac Sierra mam / Library / Java / JavaVirtualMachines, który ma jdk i Preferencje systemowe> Java. Czym różnią się te 2?
vikramvi
inne pytanie, dziękuję
Olivier Refalo
Nie lekceważ szans, że instalacja Java może nie zostać poprawnie ukończona. Jeśli żadna z poniższych doskonałych sugestii nie wydaje się działać, spróbuj [ponownie] zainstalować!
MarkHu,
Odpowiedzi:
1059
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 .
Dobrze wiedzieć. Muszę powiedzieć, że nie jestem zbyt zachwycony listą funkcji dla Lion. Wydaje się, że nie ma zbyt wiele sposobów na ulepszenia dla mojego użycia ...
prodigitalson
1
@Oliver: ewww :-) To prawdopodobnie najmniej przydatna rzecz ... zawsze mam wiele okien otwartych i rozmieszczonych na ekranie, dzięki czemu mogę zobaczyć wiele rzeczy na raz ... zwykle inny układ na każdej przestrzeni.
prodigitalson
11
to nie działało dla mnie. /System/Library/Frameworks/JavaVM.framework/Home działał.
chaostheory,
7
Działa również na Maverick!
cbare
3
W przypadku Java 11 i High Sierra wyeksportuj JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"
Willie Z
112
/usr/libexec/java_homenie 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:
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.
Działałoby, gdybyś zainstalował java 6 z Apple. Chodzi o to, że korzystasz z Oracle Jave 7.
Olivier Refalo,
2
Działa to dla mnie bardzo dobrze w Mavricks, ale lokalizacja skryptu java_home jest inna. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost
1
Próbowałem skonfigurować maven na Mac Yosemite, w ten sposób ustawienie JAVA_HOME działa dla mnie.
Alocus
Działa dla mnie w Sierra 10.12 i Java 8
Kanak Sony
41
Ż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_profilepliku.
Myślę, że dostałem twój PB - używasz cudzysłowów zamiast cudzysłowów „vs”
Olivier Refalo
Nie, używam właściwych cytatów, zamiast tego próbowałem skopiować wklejanie, to nie działało. Zaktualizowałem swoją odpowiedź, ponieważ zadziałała dla mnie.
Giri
@OlivierRefalo Widzę, że zaktualizowałeś swoją odpowiedź podwójnymi cudzysłowami ("). Ale nawet bez cudzysłowów, to działa.
Giri
Wielkie dzięki . Dla mnie zadziałało w Yosemite 10.10
Vijay
2
To jedyne rozwiązanie, które naprawdę działa. Dodanie ścieżki dowolnym innym rozwiązaniem spowoduje tymczasowe dodanie, dopóki nie zakończysz terminala, a ścieżka zniknie. Aby dodać na stałe, ścieżkę należy zapisać w pliku .bash_profile. Tymczasem dla uproszczenia użyłem nano zamiast vim.
Nadeem Jamali
31
Aktualizacja dla Java 9 i kilka porządnych aliasów.
Powyższe nie działało dla mnie z narzędziami Amazon EC2, ponieważ spodziewa się bin/javaitp JAVA_HOME. Poniżej . /System/Library/Frameworks/JavaVM.framework/Homezadziałało.
Czy to był lew? czy dostałeś oficjalny pakiet Java od Apple, czy Java6 / 7 od Oracle?
Olivier Refalo
Uważam, że był to pakiet Java firmy Apple.
Cawflands
1
@AndrewH tak, uważam, że to samo jest prawdą. Zainstalowałem pakiet Apple Apple i odkryłem rzeczywistą ścieżkę biblioteki (na przykład, aby ustawić -vm w eclipse.ini): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub
Dzięki za informację. Może jestem zbyt prosty, ale dlaczego OS X czyni tak prostą rzecz kompletnym bałaganem?
Nie dostaję twojej propozycji: czym to się różni od eksportu JAVA_HOME = /usr/libexec/java_home ? polecenie / usr / libexec / java_home zwraca /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier
W przypadku visualgc / usr / libexec / java_home zwraca: Plik java.exe znaleziony pod adresem: / usr / libexec / java_home nie znajduje się w katalogu JDK. Ustaw i wyeksportuj zmienną środowiskową JVMSTAT_JAVA_HOME, aby odwoływała się do katalogu zawierającego JDK Sun J2SE 1.5.0 (nie JRE) i spróbuj ponownie.
EGHM
13
Poniższe działało dla mnie. Używam ZSH na OSX Yosemite z zainstalowaną Javą 8.
Następujące polecenie /usr/libexec/java_homeemituje ścieżkę do strony głównej JDK:
w pewnym sensie nie zgadzam się z tym stwierdzeniem „więcej możliwości aktualizacji” / usr / libexec / java_home to exe, który zwraca ścieżkę, a nie stałą ścieżkę. Poza tym, w zależności od używanej wersji jvm, ścieżka powyżej nie będzie pasować
Olivier Refalo,
10
Wydaje się, że instalują się tutaj nowsze maszyny JVM Oracle, takie jak 1.7.0_21-b12:
Rzeczywiście - i /usr/libexec/java_homenarzędzie zwraca błąd dla tych wersji Java.
Joe Dyndale,
1
To jest jedyna odpowiedź, która działa dla mnie po pobraniu wersji
1.7
2
Jest to ścieżka, jeśli zainstalujesz środowisko JRE. Większość ocenionych odpowiedzi i komentarzy dotyczy JDK. Nie to samo.
Brak 1
9
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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer VM 18.9(build 11.0.1+13-LTS, mixed mode)
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.
W przypadku nowej instalacji Mavericks jest to jedyne rozwiązanie, które działało dla mnie. Musiałem skierować programistę sqdeveloper do znajdującego się tutaj domu jdk (jak sugeruje ten wątek, aby go uruchomić.
Chris
2
OSX Yosemite, ZSH i Java SE Runtime Environment 8, musiałem:
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 javazwraca/usr/bin/java .
Tak, ja ustawić JAVA_HOME=/usrw moim.bashrc .
Najwyraźniej /usr/bin/javajest to symboliczny link, /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadzięki któremu wszystko działa.
Aktualizacja
Jak wspomniano w komentarzu poniżej, ta JAVA_HOMEwartość nie jest idealnym rozwiązaniem, gdy JAVA_HOMEzmienna ś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.
chodzi o to, że / usr nie jest poprawnym katalogiem JAVA_HOME. Można zlokalizować bin / java. Ale czasami budowniczowie (mrówka, marka) używają JAVA_HOME do odwoływania się do kompilatora javac w lib / tools.jar Twoje rozwiązanie zawiedzie dla nich
Olivier Refalo
Dzięki za informację. Masz rację. Zaktualizuje odpowiedź.
Anjan
0
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
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
Odpowiedzi:
Po zainstalowaniu opcjonalnego pakietu Java lub Oracle JDK dodanie jednego z poniższych wierszy do pliku ~ / .bash_profile spowoduje odpowiednie ustawienie zmiennej środowiskowej.
Aktualizacja: dodano flagę -v na podstawie odpowiedzi Jillesa van Gurpa .
źródło
/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:
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.
jest na to sposób. Uwaga: aktualizacja do wersji 1.8 działa dobrze.
źródło
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.
To rozwiązanie działa również w systemie OS X Yosemite z Javą 1.8 zainstalowaną z Oracle.
źródło
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 starszych
OS X
W przypadku systemu OS X Yosemite 10.10 wykonaj następujące kroki
Użyj swojego ulubionego edytora tekstu, aby otworzyć:
~/.bash_profile
Dodaj następujący wiersz do pliku i zapisz go (: następnie „x” dla vima):
Następnie w terminalu wpisz następujące dwa polecenia, aby wyświetlić dane wyjściowe:
W drugim wierszu aktualizujesz zawartość
.bash_profile
pliku.źródło
Aktualizacja dla Java 9 i kilka porządnych aliasów.
W
.bash_profile
:Zauważ, że w najnowszej wersji tak jest
9
i nie1.9
.Ustaw aktywną Javę:
Niektóre dodatkowe aliasy do przełączania między różnymi wersjami:
Test w terminalu:
EDYCJA: Aktualizacja dla Java 10
EDYCJA: Aktualizacja dla Java 11
źródło
Powyższe nie działało dla mnie z narzędziami Amazon EC2, ponieważ spodziewa się
bin/java
itpJAVA_HOME
. Poniżej ./System/Library/Frameworks/JavaVM.framework/Home
zadziałało.źródło
W systemie OS X możesz wykonać:
źródło
W systemie Mac OS X Lion, aby ustawić uruchamianie visualgc, użyłem:
źródło
/usr/libexec/java_home
? polecenie / usr / libexec / java_home zwraca /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomePoniż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
,źródło
Lepszym (bardziej rozbudowalnym) sposobem jest użycie następujących opcji:
Powinno to działać również z AWS, ponieważ znajduje się
bin
pod Homeźródło
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
źródło
/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
wpisz w terminalu, aby potwierdzić:
źródło
Moje podejście to:
.bashrc
Ułatwia to przełączanie między J6 i J7
źródło
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
źródło
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
źródło
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"
źródło
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 /
źródło
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:
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ą
który wybiera najnowszą zainstalowaną wersję JDK oddziału 1.7. Aby wybrać konkretną wersję, wystarczy ją uruchomić
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.
źródło
W przypadku języka Java 11 (JDK 11) można go zlokalizować za pomocą następującego polecenia:
źródło
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, gdyJAVA_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.źródło
W przypadku systemu Mac Yosemite
Używa JDK 1.7.0_xx
źródło
Każda osoba korzystająca z AUSKEY z australijskiego urzędu skarbowego (ATO) powinna odinstalować AUSKEY. To rozwiązało moje problemy z JAVA_HOME.
Nie jest już także wymagany dla użytkowników MAC. Tak!
źródło
Używam powłoki Fish na High Sierra 10.13.4 i zainstalowałem Javę przez Brew.
Nie jest konfigurowany automatycznie, więc aby ustawić go poprawnie w moim systemie, uruchamiam:
źródło
Wystarczy ustawić java_home wersji 1.8 jdk w
netbeans.conf
pliku:linia odkomentowania:
i ustaw ścieżkę do twojego 1.8 jdk, w moim przypadku:
Podejście to zakłada posiadanie kilku wersji JDK na Mac OS
źródło
Dla użytkowników terminali Fish na Macu (myślę, że jest on również dostępny w systemie Linux), powinno to działać:
źródło
dla użytkowników komputerów Mac. java 8 powinna dodać
java 6:
ref: http://qiita.com/seri_k/items/e978c1339ce51f13e297
źródło