Java является дополнительным пакетом в последних версиях macOS.
Тем не менее, после установки кажется, что переменная окружения JAVA_HOME установлена неправильно .
Java является дополнительным пакетом в последних версиях macOS.
Тем не менее, после установки кажется, что переменная окружения JAVA_HOME установлена неправильно .
Ответы:
При установленном дополнительном пакете 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 ван Гурп ответ .
/usr/libexec/java_home
это не каталог, а исполняемый файл. Он выводит текущий настроенный JAVA_HOME и фактически не меняет его. Это то, для чего предназначено приложение Java Preferences, которое в моем случае кажется неработоспособным и фактически не меняет JVM правильно. В нем есть список 1.7 JVM, но я могу переключать, снимать и перетаскивать все, что хочу, без изменения выходных данных /usr/libexec/java_home
.
Даже после установки 1.7.0 u6 из Oracle на Lion и установки его по умолчанию в настройках, он все равно вернул домой яблочную версию 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 работает просто отлично.
Для меня, Mountain Lion 10.8.2, решение с наибольшим количеством голосов не работает. Я установил JDK 1.7 через Oracle и Maven из доморощенного.
Мое решение взято из файла hadoop-env.sh, который я установил из homebrew. Я добавляю следующее предложение в ~ / .bash_profile, и это работает.
export JAVA_HOME="$(/usr/libexec/java_home)"
Это решение также работает для OS X Yosemite с Java 1.8, установленной из Oracle.
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Ни один из приведенных выше ответов не помог мне. Я полагаю, что все ответы для пожилых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
файла.
Обновление для 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'
Вышесказанное не работает для меня с инструментами Amazon EC2, потому что это ожидает bin/java
и т.д. под ним JAVA_HOME
. /System/Library/Frameworks/JavaVM.framework/Home
сделал работу.
В Mac OS X Lion для запуска Visualgc я использовал:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
/usr/libexec/java_home
? команда / usr / libexec / java_home возвращает /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/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
под Home
Более новые Oracle JVM, такие как 1.7.0_21-b12, устанавливаются здесь:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
инструмент возвращает ошибку для этих версий Java.
для 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)
Мой подход:
.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
Мне пришлось явно указать точный путь в моем MacBook Air.
Последовали шаги:
echo $JAVA_HOME
(если он установлен, он покажет путь), если нет, попробуйте найти его, используяsudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
echo $JAVA_HOME
Я использую MACOS MOJAVE - 10.14.2 (18C54) на Macbook Air с JAVA 8
Для Mac OS X 10.9 я установил последнюю версию JRE из Oracle, а затем сбросил JAVA_HOME на /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Я уверен, что есть лучший способ, но заставил меня работать.
hughsmac: ~ hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
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"
После обновления Mac OS возникла та же проблема, и у меня сработало следующее:
cmd> vi ~ / .bash_profile
Добавьте / обновите строку для JAVA_HOME: export JAVA_HOME = "/ Библиотека / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"
cmd> source ~ / .bash_profile или откройте новый терминал
Я думаю, что версия JDK может отличаться, так что просто используйте версию, которая у вас есть в / Library / Java / JavaVirtualMachines /
Если вам нужно иметь несколько версий 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 $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
Сценарий сначала удаляет другие версии 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 чтобы получить более подробную информацию о том, как выбирать версии.
PS Не забудьте получить исходный текст ~ / .bash_profile после его сохранения.
Этот ответ относится к горному льву, а не льву. Мне нужно было сделать это для инструментов командной строки 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, как указано в их документах.
Для 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
Я использую рыбу оболочку на High Sierra 10.13.4 и устанавливаю Java через Brew.
Он не настроен автоматически, поэтому для правильной настройки в моей системе я запускаю:
set -U JAVA_HOME (/usr/libexec/java_home)
Просто установите 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
для пользователя Mac. Ява 8 следует добавить
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Ява 6:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home