Где находится JAVA_HOME на macOS Mojave (10.14) до Lion (10.7)?
Проблема с переменной окружения JAVA_HOME на macOS
На последних версиях macOS Java является дополнительным пакетом. Однако после установки Java оказывается, что переменная окружения JAVA_HOME не установлена должным образом.
Как можно правильно настроить JAVA_HOME на macOS?
5 ответ(ов)
Проблема, которую вы описываете, может быть связана с настройками среды Java для Hadoop на вашей системе. Для версии Mountain Lion 10.8.2, решение, которое наиболее голосовали, не сработало. Я устанавливал JDK 1.7 через Oracle и Maven из Homebrew.
Мое решение основано на файле hadoop-env.sh
, который я также установил через Homebrew. Я добавил следующую строку в файл ~/.bash_profile
, и это сработало:
export JAVA_HOME="$(/usr/libexec/java_home)"
Это решение также работает для OS X Yosemite с установленной Java 1.8 от Oracle. Попробуйте этот способ, возможно, он поможет решить вашу проблему.
Ни один из предыдущих ответов мне не помог. Я предполагаю, что все ответы для старых версий OS X
.
Для OS X Yosemite 10.10 выполните следующие шаги:
- Используйте ваш любимый текстовый редактор для открытия файла:
~/.bash_profile
.
# Эта команда откроет файл с помощью vim
$ vim ~/.bash_profile
- Добавьте следующую строку в файл и сохраните его (в vim это делается с помощью
:
, а затемwq
):
export JAVA_HOME=$(/usr/libexec/java_home)
- Затем в терминале введите следующие две команды, чтобы увидеть вывод:
$ source ~/.bash_profile
$ echo $JAVA_HOME
На второй строке вы обновляете содержимое файла .bash_profile
.
Чтобы установить и переключаться между различными версиями Java на macOS с помощью .bash_profile
, можно использовать следующий подход:
В вашем .bash_profile
добавьте следующие строки:
export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Обратите внимание, что для актуальной версии Java используется просто 9
, а не 1.9
.
Чтобы задать активную версию Java, выполните:
export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Вы также можете создать удобные алиасы для переключения между версиями:
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'
Теперь вы можете протестировать это в терминале:
% 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)
Если вы хотите добавить поддержку более новых версий Java, просто обновите ваш .bash_profile
. Например, для Java 10 и 11:
Для Java 10:
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
Для Java 11:
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
После внесения изменений не забудьте выполнить команду source ~/.bash_profile
, чтобы обновить текущую сессию терминала. Теперь вы сможете легко переключаться между версиями Java с помощью команды j8
, j9
, j10
и j11
.
Проблема в том, что указанный путь не сработал для инструментов Amazon EC2, так как они ожидают, что bin/java
и другие файлы будут находиться под JAVA_HOME
. Однако у меня сработал путь /System/Library/Frameworks/JavaVM.framework/Home
. Убедитесь, что вы правильно установили переменную окружения JAVA_HOME
, указывая на корректный путь к установленной версии Java.
Для OS X вы можете выполнить следующую команду в терминале:
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home`
Эта команда устанавливает переменную окружения JAVA_HOME
, указывая на текущую версию Java, установленную в вашей системе. Убедитесь, что вы добавили эту строку в ваш файл конфигурации (например, .bash_profile
или .zshrc
), чтобы переменная сохранялась при перезапуске терминала.
Как установить Java 8 на Mac
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Загрузка JDK Java на Linux через wget приводит к отображению страницы лицензии вместо установки
Создание репозитория Spring без сущности