Где находится JAVA HOME на macOS Sierra (10.12), El Capitan (10.11), Yosemite (10.10), Mavericks (10.9), Mountain Lion (10.8) или OSX Lion (10.7)?

Java-это дополнительный пакет для последних версий macOS.

но после установки он выглядит как переменной JAVA_HOME переменные среды не установлен должным образом.

21 ответов


С дополнительный пакет Java или Oracle JDK установленные, добавление одной из следующих строк в ваш ~/.файл file установит переменную среды соответственно.

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)"

обновление: добавил - v флаг на основе Jilles van Gurp ответ.


/usr/libexec/java_home - это не каталог, а исполняемый файл. Он выводит текущий настроенный JAVA_HOME и фактически не изменяет его. Вот для чего предназначено приложение Java Preferences, которое в моем случае кажется сломанным и на самом деле не изменяет JVM правильно. Он перечисляет 1.7 JVM, но я могу переключать / разворачивать и перетаскивать все, что я хочу, без фактического изменения вывода /usr/libexec/java_home.

даже после установки 1.7.0 u6 из Oracle на Lion и установки его по умолчанию в предпочтения, он все равно вернул Apple 1.6 java home. Единственное исправление, которое действительно работает для меня, - это установка JAVA_HOME вручную:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

по крайней мере, при запуске из командной строки он будет использовать 1.7. /usr/libexec/java_home все еще настаивает на 1.6.

обновление: понимание Java из командной строки на OSX имеет лучшее объяснение того, как это работает.

export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 

- это способ сделать это. Обратите внимание, что обновление до 1.8 работает только штраф.


для меня, Mountain Lion 10.8.2, решение, за которое проголосовало большинство, не работает. Я установил jdk 1.7 через Oracle и maven из homebrew.

мое решение от hadoop-env.sh файл hadoop, который я установил из 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

//This command will open the file using vim
$ vim ~/.bash_profile

добавьте следующую строку в файл и сохраните ее (: после "x"для vim):

export JAVA_HOME=$(/usr/libexec/java_home)

затем в терминале введите следующие две команды, чтобы увидеть вывод:

$ source ~/.bash_profile

$ echo $JAVA_HOME

во второй строке, вы обновляете содержимое из .


вышеизложенное не сработало для меня с инструментами EC2 Amazon, потому что он ожидает bin/java etc. под JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Home сработало.


обновление для Java 9 и некоторого аккуратного псевдонима.

на .bash_profile:

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`

обратите внимание, что для последней версии 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)

EDIT: обновление для Java 10

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'

для OS X вы можете сделать:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`

в Mac OS X Lion, чтобы установить visualgc для запуска, я использовал:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

следующее сработало для меня. Я использую ZSH на OSX Yosemite с установленной Java 8.

следующую команду /usr/libexec/java_home выдает путь к JDK home:

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

в своем ~/.zshrc,

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"

лучший (более обновляемый) способ-использовать следующее:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Это должно работать и с AWS, так как у него есть bin под домом


новые Oracle JVMs, такие как 1.7.0_21-b12, похоже, устанавливаются здесь:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home


мой подход:

.bashrc и

export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME

# -- optional
# export PATH=$JAVA_HOME/bin:$PATH

Это позволяет очень легко переключаться между J6 и J7


для Mac OS X 10.9 я установил последнюю версию JRE из Oracle, а затем сбросил JAVA_HOME в /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk / содержание / главная.

Я уверен, что есть лучший способ, но у меня работает.

hughsmac:~ hbrien$ echo $JAVA_HOME / Библиотека / Java/JavaVirtualMachines / jdk1.7.0_45.jdk/содержание / главная


OSX Yosemite, ZSH и Java SE среда выполнения 8, мне пришлось:

$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

и в ~/.переменной JAVA_HOME изменения в zshrc export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"


получил ту же проблему после обновления моей Mac OS и после работы для меня:

  1. cmd>vi ~/.файл

  2. добавить / обновить строку для JAVA_HOME: экспорт JAVA_HOME= " / библиотека / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / содержание / главная"

  3. cmd>источник ~/.bash_profile или открыть новый терминал

Я думаю, что версия jdk может отличаться, поэтому просто используйте версию, которая у вас есть под / Библиотека / Java / JavaVirtualMachines/


Если вам нужно иметь несколько версий JDK под Mac OS X (Yosemite), может быть полезно добавить некоторые сценарии для автоматического переключения между ними.

то, что вы делаете, это редактировать свой ~/.файл и добавить следующее:

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 [email protected]`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:;;" -e "s;:?;;")
 }
setjdk 1.7

что делает скрипт, это сначала удалить другие версии JDK в путь чтобы они не мешали нашей новой версии JDK. Тогда он делает некоторые умные использования в/usr/IP-адресов/переменной JAVA_HOME которая является командой, которая перечисляет установленные версии JDK. The - v. В конце мы можем просто выполнить функцию, используя

setjdk 1.7

который выбирает последнюю установленную версию JDK 1.7 отделение. Чтобы выбрать конкретную версию, вы можете просто выполнить

setjdk 1.7.0_51
. Запустить в/usr/IP-адресов/переменной JAVA_HOME -в чтобы получить более подробную информацию о том, как выбрать варианты.

P. S. Не забудьте источник ~/.файл после того, как вы сохраните его.


Для Mac Yosemite,

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

Я использую Рыбное shell на High Sierra 10.13.4 и установлен Java через Brew.

он не настроен автоматически, чтобы установить его правильно в моей системе я запускаю:

set -U JAVA_HOME (/usr/libexec/java_home)

этот ответ связан с Горный Лев и не Лев. Мне нужно было сделать это для инструментов командной строки AWS. Согласно документы AWS, работает which java возвращает /usr/bin/java.

Итак, я поставил JAVA_HOME=/usr в своем .bashrc.

видимо, /usr/bin/java является символической ссылкой на /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java что заставляет все это работать.

обновление

как указано в комментарии ниже, это JAVA_HOME значение не является идеальным решение, когда JAVA_HOME переменная среды должна использоваться вещами, отличными от инструментов командной строки AWS. Однако он отлично работает для инструментов командной строки AWS, как указано в их документах.


любой, кто использует AUSKEY из австралийской налоговой службы (ATO), должен удалить AUSKEY. Это рассортировало мои проблемы JAVA_HOME.

Это также больше не требуется для пользователей MAC. Ях!


для пользователя mac . java 8 должен добавить

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

java 6:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

ref:http://qiita.com/seri_k/items/e978c1339ce51f13e297