Где находится JAVA_HOME в macOS от Мохаве (10,14) до Льва (10,7)?

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

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

Ответ 1

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

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 .

Ответ 2

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

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

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

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

Обновить: Понимание Java From Command Line на OSX дает лучшее объяснение того, как это работает.

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

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

Ответ 3

Для меня 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.

Ответ 4

Ни один из вышеперечисленных ответов не помог мне. Я полагаю, что все ответы для более старых 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

Во второй строке вы обновляете содержимое файла .bash_profile.

Ответ 5

Обновление для 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)

РЕДАКТИРОВАТЬ: Обновление для 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'

Ответ 6

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

Ответ 7

Для OS X вы можете:

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

Ответ 8

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

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

Ответ 9

Следующие работали для меня. Я использую 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"

Ответ 10

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

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

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

Ответ 11

Новые JVM-устройства Oracle, такие как 1.7.0_21-b12, как представляется, устанавливаются здесь:

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

Ответ 12

для macOS Mojave 10.14.1 и JAVA 11.0.1 я установил профиль как

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

введите в терминале это, чтобы подтвердить:

$JAVA_HOME/bin/java -version

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

Ответ 13

Мой подход:

.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

Ответ 14

Я должен был явно указать точный путь в моем эфире Macbook.

Последовали шаги:

  1. попробуйте echo $JAVA_HOME (если он установлен, он покажет путь), если нет, попробуйте найти его с помощью sudo find/usr / -name *jdk
  2. Отредактируйте Bash p с помощью - sudo nano ~/.bash_profile
  3. Добавьте точный путь к JAVA Home (с путем из шага 2 выше) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. Сохранить и выйти
  5. Проверьте JAVA_Home, используя - echo $JAVA_HOME

Я использую MACOS MOJAVE - 10.14.2 (18C54) на Macbook Air с JAVA 8

Ответ 15

Для Mac OS X 10.9 я установил последнюю версию JRE из Oracle, а затем reset JAVA_HOME в /Library/Java/JavaVirtualMachines/jdk 1.7.0_45.jdk/Contents/Home.

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

hughsmac: ~ hbrien $echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk 1.7.0_45.jdk/Contents/Home

Ответ 16

OSX Yosemite, ZSH и Java SE Runtime Environment 8, мне пришлось:

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

и в ~/.zshrc измените JAVA_HOME на export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"

Ответ 17

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

  • cmd > vi ~/.bash_profile

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

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

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

Ответ 18

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

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

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;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

Что делает script, так это сначала удалить другие версии JDK в PATH, чтобы они не мешали нашей новой версии JDK. Затем он использует некоторое умение /usr/libexec/java_home, которое представляет собой команду, в которой перечислены установленные версии JDK. Аргумент -v сообщает java_home вернуть путь JDK к поставляемой версии, например 1.7. Мы также обновляем PATH, чтобы указать каталог bin в недавно найденном каталоге JAVA_HOME. В конце мы можем просто выполнить функцию, используя

setjdk 1.7

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

setjdk 1.7.0_51

вместо этого. Запустите /usr/libexec/java_home -V, чтобы получить более подробную информацию о том, как выбирать версии.

P.S. Не забывайте source ~/.bash_profile после сохранения.

Ответ 19

Этот ответ связан с Mountain Lion, а не с Lion. Мне нужно было сделать это для инструментов командной строки AWS. Согласно AWS docs, запуск 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 Command Line Tools. Он отлично работает для инструментов командной строки AWS, хотя, как указано в их документах.

Ответ 20

Для 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

Ответ 21

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

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

Ответ 22

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

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

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

Ответ 23

Просто установите java_home для версии 1.8 jdk в файле netbeans.conf:

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

раскомментировать строку:

netbeans_jdkhome="path/to/jdk"

и установите путь к вашему 1.8 JDK, в моем случае:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

Этот подход предполагает наличие нескольких версий JDK на Mac OS

Ответ 24

Для пользователей терминалов Fish на Mac (я думаю, что это доступно и для Linux), это должно работать:

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

Ответ 25

для пользователя 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