Что я должен установить JAVA_HOME на OSX
Многие приложения Java, которые используют сценарии оболочки для настройки своей среды, используют JAVA_HOME
переменная окружения, чтобы запустить правильную версию Java, найти JRE JAR и т. д.
На OSX 10.6 следующие пути кажутся допустимыми для этой переменной
/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current
Некоторые из них являются символическими ссылками на фактическую текущую виртуальную машину (как определено на панели настроек Java).
Но какой из них следует использовать - или можно использовать любой из них?
15 ответов
Есть ли у снежного барса еще /usr/libexec/java_home
? На 10.5 я просто установил JAVA_HOME
к выводу этой команды, которая должна дать вам путь Java, указанный в ваших настройках Java. Вот фрагмент из моего .bashrc
файл, который устанавливает эту переменную:
export JAVA_HOME=$(/usr/libexec/java_home)
Я не испытывал никаких проблем с этой техникой.
Изредка мне приходится менять значение JAVA_HOME
к более ранней версии Java. Например, для одной поддерживаемой мной программы требуется 32-разрядная версия Java 5 в OS X, поэтому при использовании этой программы я установил JAVA_HOME
запустив:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)
Для тех из вас, у кого нет java_home
на вашем пути добавьте это так.
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home
Кроме того, интересно, чтобы ваш PATH отражал JDK. После добавления JAVA_HOME (что можно сделать с примером, приведенным в 'mipadi'):
export JAVA_HOME=$(/usr/libexec/java_home)
Добавьте также в ~ /.profile:
export PATH=${JAVA_HOME}/bin:$PATH
PS: для OSX я обычно использую.profile в директории HOME вместо.bashrc
У меня MAC OS X (Sierra) 10.12.2.
Я установил JAVA_HOME для работы с React Native(для приложений Android), выполнив следующие шаги.
Откройте Терминал (Command+R, введите Терминал, нажмите ENTER).
Добавьте следующие строки в ~ /.bash_profile.
export JAVA_HOME=$(/usr/libexec/java_home)
Теперь запустите следующую команду.
source ~/.bash_profile
Вы можете проверить точное значение JAVA_HOME, введя следующую команду.
echo $JAVA_HOME
Возвращаемое значение (выход) будет примерно таким, как показано ниже.
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
Вот и все.
Я на Mac OS 10.6.8
Самое простое решение работает для меня, это просто положить в
$ export JAVA_HOME=$(/usr/libexec/java_home)
Чтобы проверить, работает ли он, вставьте
$ echo $JAVA_HOME
это показывает
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Вы также можете проверить
$ which java
В настоящее время кажется, что Java установлена в /Library/Java/JavaVirtualMachines
Я склонен использовать /Library/Java/Home
, То, как работает панель настроек, должно соответствовать вашей предпочтительной версии.
То, что выше, больше не работает в YOSEMITE для графических приложений! Как затмение или что-то началось с Spotlight. (.bash_profile, launchd.conf работает только для терминальных сессий.) Перед запуском eclipse просто откройте окно терминала и введите следующую команду:
launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
(С вашим путем установки! Возможно, работает и с $(/usr/libexec/java_home) вместо полного пути.)
Прочитайте всю отличную статью о постоянном решении здесь: Установка переменных среды через launchd.conf больше не работает в OS X Yosemite/El Capitan/macOS Sierra?
Создать файл ~/.mavenrc
затем вставьте это в файл
export JAVA_HOME=$(/usr/libexec/java_home)
тестовое задание
mvn -v
Перед установкой переменной среды JAVA_HOME рекомендуется проверить оболочку терминала по умолчанию с помощью следующих команд:
$ echo $SHELL
/bin/bash
Если ваш терминал по умолчанию - / bin / bash (Bash), вам следует использовать метод @hygull.
Если ваш терминал по умолчанию - / bin / zsh (Z Shell), вы должны установить эту переменную среды в файле ~/.zshenv со следующим содержимым:
export JAVA_HOME="$(/usr/libexec/java_home)"
Точно так же для любого другого типа терминала, не упомянутого выше, вы должны установить переменную среды в соответствующем файле env терминала.
Этот метод протестирован для работы в macOS Mojave версии 10.14.6.
Я нашел этот стек, чтобы помочь, у меня была та же проблема, и я мог бы исправить:
Мой путь Java был здесь:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
и нужно было положить в мой .bash_profile
:
export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"
Надеюсь помочь
Для меня Maven, кажется, работает от .mavenrc
файл:
echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc
Я уверен, что я поднял это на SO тоже, просто не могу вспомнить, где.
Пропуск настройки терминала, поскольку вы упомянули приложения, постоянную настройку системной переменной среды (работает для macOS Sierra; должна работать и для El Capitan):
launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)
(это установит JAVA_HOME на последнюю версию 1.8 JDK, скорее всего, вы прошли через несколько обновлений, например, javac 1.8.0_101, javac 1.8.0_131)
Конечно, измените 1.8 на 1.7 или 1.6 (правда?), Чтобы удовлетворить ваши потребности и вашу систему
Как отмечают другие ответы, правильный способ найти домашний каталог Java - это использовать /usr/libexec/java_home
,
Официальная документация для этого находится в Технических вопросах и ответах Apple QA1170: Важные каталоги Java на OS X: https://developer.apple.com/library/mac/qa/qa1170/_index.html
Компьютер MacBook Pro — MAC OS Ventura 13
Я установил JAVA_HOME для работы со следующими шагами:
Откройте Командную строку/Терминал (Command+R, введите Terminal в поиске и нажмите Enter)
Откройте файл ~/.bash_profile (
vi ~/.bash_profile
)Добавьте/обновите эти строки на
~/.bash_profile
(export JAVA_HOME=$(/usr/libexec/java_home)
)Выполните следующую команду (
source ~/.bash_profile
)Проверьте домашний путь Java (
echo $JAVA_HOME
)
Вывод: он будет похож на ваш путь java (/Library/Java/JavaVirtualMachines/applejdk-17.0.5.8.2.jdk/Contents/Home
)
Для пользователей Fish Shell используйте что-то вроде следующего: alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"