Что я должен установить 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 для работы со следующими шагами:

  1. Откройте Командную строку/Терминал (Command+R, введите Terminal в поиске и нажмите Enter)

  2. Откройте файл ~/.bash_profile (vi ~/.bash_profile)

  3. Добавьте/обновите эти строки на~/.bash_profile(export JAVA_HOME=$(/usr/libexec/java_home))

  4. Выполните следующую команду (source ~/.bash_profile)

  5. Проверьте домашний путь 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)"

Другие вопросы по тегам