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 додому. Єдине виправлення, яке насправді працює для мене, - це встановити 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 працює просто чудово.
Для мене, Гірський лев 10.8.2, рішення, яке найбільше проголосували, не працює. Я встановив jdk 1.7 через Oracle і maven від домашньої мови.
Моє рішення - з файлу hadoop-env.sh з hadoop, який я встановив і з домашньої мови. Я додаю нижченаведене речення в ~ / .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)
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'
EDIT: оновлення для Java 11
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Вище , не працює для мене з EC2 інструментів Amazon, тому що він очікує , і 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:
/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
вдома
Тут, здається, встановлені новіші JVM Oracle, такі як 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.
Наступні кроки:
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 і працював над цим:
cmd> vi ~ / .bash_profile
Додати / оновити рядок для JAVA_HOME: export JAVA_HOME = "/ Бібліотека / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Зміст / Головна"
cmd> source ~ / .bash_profile або відкрийте новий термінал
Я думаю, що версія jdk може відрізнятися, тому просто використовуйте версію, яку ви маєте в розділі / Бібліотека / 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, щоб вказати на каталог бін щойно знайденого каталогу 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
Просто встановіть у netbeans.conf
файл java_home версії 1.8 jdk :
/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. 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