Wiele aplikacji Java, które używają skryptów powłoki do skonfigurowania swojego środowiska, używa JAVA_HOME
zmiennej środowiskowej do uruchamiania poprawnej wersji Java, lokalizowania plików JRE JRE itd.
W systemie macOS X 10.6 następujące ścieżki wydają się poprawne dla tej zmiennej
/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current
Niektóre z nich to dowiązania symboliczne do rzeczywistej bieżącej maszyny wirtualnej (zgodnie z definicją w okienku preferencji Java).
Ale który z nich powinien zostać użyty - czy można w ogóle użyć któregoś z nich?
java
macos
configuration
Robert Christie
źródło
źródło
Odpowiedzi:
Właśnie ustawiłem
JAVA_HOME
wynik tej komendy, która powinna dać ci ścieżkę Java określoną w twoich preferencjach Java. Oto fragment mojego.bashrc
pliku, który ustawia tę zmienną:Nie spotkałem żadnych problemów z tą techniką.
Czasami muszę zmienić wartość
JAVA_HOME
na wcześniejszą wersję Java. Na przykład jeden program, który prowadzę, wymaga 32-bitowej wersji Java 5 w systemie OS X, więc podczas korzystania z tego programu ustawiamJAVA_HOME
, uruchamiając:Dla tych z was, którzy nie mają
java_home
na swojej drodze, dodajcie to w ten sposób.Referencje :
Oracle wyjaśnia komendę java_home
Artykuł na temat konfigurowania JDK w Spring Tool Suite (Eclipse 2019) na MacOS
źródło
Interesujące jest również ustawienie ŚCIEŻKI odzwierciedlającej JDK. Po dodaniu JAVA_HOME (co można zrobić na przykładzie cytowanym przez „mipadi”):
export JAVA_HOME=$(/usr/libexec/java_home)
Dodaj także w ~ / .profile:
export PATH=${JAVA_HOME}/bin:$PATH
PS: W OSX zwykle używam .profile w katalogu HOME zamiast .bashrc
źródło
.bash_profile
- dlaczego używasz tego niż ogólny.profile
?.profile
jest ogólny, będzie działał zsh
lubbash
, podczas gdy.bash_profile
jest wyłączny dlabash
. To również izoluje ustawienia od aplikacji, które używają.bash_profile
, takich jakMacPorts
. Ale możesz bezpiecznie użyć dowolnego z tych dwóch. Zobacz więcej na ten temat tutaj.bash_profile
przesłonięć.profile
..bash_profile
jest specyficzny, podczas gdy.profile
ogólny, dla wszystkichsh
odmian.java
twojego,/usr/bin
nie powinno być potrzeby jawnego dodawania$JAVA_HOME
do twojej ścieżki.Mam system MAC OS X (Sierra) 10.12.2 .
Ustawić JAVA_HOME do pracy na React Native (dla Android), wykonując następujące kroki.
Otwórz terminal (Command + 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 polecenie.
echo $JAVA_HOME
Zwracana wartość (wynik) będzie wyglądać jak poniżej.
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
Otóż to.
źródło
$JAVA_HOME
odnosi się$(/usr/libexec/java_home)
i$(/usr/libexec/java_home)
jest wewnętrznie nazywany/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
przez System.Jestem na Mac OS 10.6.8
Najłatwiejsze dla mnie rozwiązanie jest po prostu wprowadzone
Aby sprawdzić, czy to działa, włóż
to pokazuje
możesz także przetestować
źródło
Obecnie wydaje się, że Java jest zainstalowana
/Library/Java/JavaVirtualMachines
źródło
Zwykle używam
/Library/Java/Home
. Sposób działania panelu preferencji powinien być aktualny dla preferowanej wersji.źródło
Powyższe nie działa już w YOSEMITE dla APLIKACJI GRAFICZNYCH! Jak zaćmienie lub cokolwiek, co zaczęło się od Spotlight. (.bash_profile, launchd.conf działa tylko dla sesji terminalowych.) Przed uruchomieniem Eclipse wystarczy otworzyć okno terminalu i wydać następujące polecenie:
(Ze ścieżką instalacyjną! Być może działa również z $ (/ usr / libexec / java_home) zamiast z pełną ścieżką.)
Zobacz cały doskonały artykuł na temat stałego rozwiązania tutaj: Ustawianie zmiennych środowiskowych za pomocą launchd.conf nie działa już w OS X Yosemite / El Capitan / macOS Sierra?
źródło
Znalazłem ten stos, aby pomóc, miałem ten sam problem i mogłem naprawić:
Moja ścieżka Java była tutaj:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
i musiałem umieścić w moim
.bash_profile
:export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"
Mam nadzieję, że pomoc
źródło
Pomijanie konfiguracji terminala, ponieważ wspomniałeś o aplikacjach, stałe ustawianie zmiennych środowiskowych systemu (działa dla macOS Sierra; powinno działać również dla El Capitan):
(ustawi to JAVA_HOME na najnowszą wersję 1.8 JDK, istnieje prawdopodobieństwo, że przeszedłeś przez aktualizacje serwerowe, np. javac 1.8.0_101, javac 1.8.0_131)
Oczywiście, zmień 1.8 z 1.7 lub 1.6 (naprawdę?), aby dopasować się do twoich potrzeb i twojego systemu
źródło
Jak zauważają inne odpowiedzi, poprawnym sposobem na znalezienie katalogu domowego Java jest użycie
/usr/libexec/java_home
.Oficjalna dokumentacja na ten temat znajduje się w pytaniach technicznych Apple QA1170: Ważne katalogi Java w systemie OS X : https://developer.apple.com/library/mac/qa/qa1170/_index.html
źródło
Dla mnie maven wydaje się działać na podstawie
.mavenrc
pliku:Jestem pewien, że podniosłem go również na SO, po prostu nie pamiętam gdzie.
źródło
Utwórz plik
~/.mavenrc
następnie wklej to do pliku
export JAVA_HOME=$(/usr/libexec/java_home)
test
mvn -v
źródło
Zaleca się sprawdzenie domyślnej powłoki terminala przed ustawieniem zmiennej środowiskowej JAVA_HOME za pomocą następujących poleceń:
Jeśli domyślnym terminalem jest / bin / bash (Bash), powinieneś użyć metody @hygull
Jeśli domyślnym terminalem jest / bin / zsh (Z Shell), powinieneś ustawić te zmienne środowiskowe w pliku ~ / .zshenv o następującej treści:
Podobnie, każdy inny typ terminala niewymieniony powyżej, powinieneś ustawić zmienną środowiskową w odpowiednim pliku env terminala.
Ta metoda przetestowana w systemie macOS Mojave w wersji 10.14.6 .
źródło
W przypadku użytkowników Fish Shell użyj czegoś takiego:
alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"
źródło