Где находится JAVA_HOME в macOS от Мохаве (10,14) до Льва (10,7)? - PullRequest
537 голосов
/ 06 июля 2011

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

Тем не менее, после установки она выглядит как JAVA_HOME Переменная окружения установлена ​​неправильно .

Ответы [ 24 ]

1030 голосов
/ 06 июля 2011

Если установлен необязательный пакет 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 флаг на основе Джиллес ван Гурп ответ .

103 голосов
/ 15 августа 2012

/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 вручную:

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 работает просто отлично.

80 голосов
/ 30 декабря 2012

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

39 голосов
/ 15 июня 2015

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

28 голосов
/ 29 ноября 2011

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

27 голосов
/ 22 сентября 2017

Обновление для 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'
18 голосов
/ 16 сентября 2014

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

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
14 голосов
/ 27 января 2012

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

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
13 голосов
/ 28 октября 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...