На Mac Sierra у меня есть / Library / Java / JavaVirtualMachines с jdk и Системными настройками> Java, что отличается между этими двумя?
vikramvi
Другой
Не стоит недооценивать вероятность того, что ваша установка Java не была завершена должным образом. Если ни одно из приведенных ниже отличных предложений не работает, попробуйте [пере] установить!
MarkHu
Ответы:
1059
При установленном дополнительном пакете 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 ван Гурп ответ .
Хорошо знать. Я должен сказать, что я не слишком взволнован со списком возможностей для Lion. Там, кажется, не так много на пути улучшения для моего использования ...
prodigitalson
1
@Oliver: ewww :-) Это, пожалуй, наименее полезная вещь ... У меня всегда несколько окон открываются и располагаются на экране, поэтому я могу видеть несколько вещей одновременно ... как правило, разные макеты в каждом пространстве.
блудница
11
это не сработало для меня. /System/Library/Frameworks/JavaVM.framework/Home работал.
Chaostheory
7
Работает на Maverick тоже!
cbare
3
Для Java 11 и High Sierra экспортируйте JAVA_HOME = "$ (/ usr / libexec / java_home -v 11)"
Вилли Z
112
/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 вручную:
Это сработало бы, если бы вы установили Java 6 от Apple.
Дело в
2
Это работает для меня на Mavricks очень хорошо, но расположение скрипта java_home другое. export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Кристофер Фрост,
1
Я попытался настроить maven на Mac Yosemite, этот способ установки JAVA_HOME работает для меня.
Alocus
У меня работает на Sierra 10.12 и Java 8
Kanak Sony
41
Ни один из приведенных выше ответов не помог мне. Я полагаю, что все ответы для пожилых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файла.
Я думаю, что я получил ваш пб - вы используете кавычки вместо
обратных
Нет, я использую правильные цитаты, вместо этого я попытался вставить копию, это не сработало. Я обновил свой ответ, потому что он работал на меня.
Гири
@OlivierRefalo Я вижу, вы обновили свой ответ с двойными кавычками ("). Но даже без кавычек, это работает.
Гири
Большое спасибо . Это сработало для меня в Йосемити 10.10
Виджай
2
Это единственное решение, которое действительно работает. Добавление пути любым другим решением добавит временно, пока вы не завершите работу терминала, и путь не исчезнет. Чтобы быть добавленным навсегда, путь должен быть сохранен в файле .bash_profile. Тем временем я использовал nano, а не vim, для простоты.
Надим Джамали
31
Обновление для Java 9 и некоторые аккуратные псевдонимы.
Вышесказанное не работает для меня с инструментами Amazon EC2, потому что это ожидает bin/javaи т.д. под ним JAVA_HOME. /System/Library/Frameworks/JavaVM.framework/Homeсделал работу.
Был ли это лев? Вы получили официальный пакет Java от Apple или Java6 / 7 от Oracle?
Оливье Рефало
Я считаю, что это был пакет Java от Apple.
Cawflands
1
@ AndrewH да, я нашел то же самое, чтобы быть правдой. Установил пакет Java от Apple и обнаружил фактический путь к библиотеке (например, для установки -vm в eclipse.ini): /System/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar
noogrub
Спасибо за информацию. Может быть, я слишком прост, но почему OS X превращает такую простую вещь в полный беспорядок?
Я не получил ваше предложение: чем это отличается от экспорта JAVA_HOME = /usr/libexec/java_home ? команда / usr / libexec / java_home возвращает /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Оливье Рефало,
Для выходов visualgc / usr / libexec / java_home: java.exe, найденный по адресу: / usr / libexec / java_home, не находится в каталоге JDK. Установите и экспортируйте переменную среды JVMSTAT_JAVA_HOME, чтобы она ссылалась на каталог, содержащий JDK Sun J2SE 1.5.0 (не JRE), и повторите попытку.
EGHM
13
Следующее сработало для меня. Я использую ZSH на OSX Yosemite с установленной Java 8.
Следующая команда /usr/libexec/java_homeотправляет путь к JDK home:
В некотором смысле не согласен с этим утверждением «более обновляемый» / usr / libexec / java_home - это исполняемый файл, который возвращает путь, а не фиксированный путь. Кроме того, в зависимости от того, какую версию jvm вы используете, путь выше не будет совпадать
Olivier Refalo
10
Более новые Oracle JVM, такие как 1.7.0_21-b12, устанавливаются здесь:
Действительно - и /usr/libexec/java_homeинструмент возвращает ошибку для этих версий Java.
Джо Диндейл
1
Это единственный ответ, который работает для меня после загрузки
v1.7
2
Это путь, если вы устанавливаете JRE. Большинство рейтинговых ответов и комментариев касаются JDK. Не то же самое.
8None1
9
для 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 RuntimeEnvironment18.9(build 11.0.1+13-LTS)JavaHotSpot(TM)64-BitServer VM 18.9(build 11.0.1+13-LTS, mixed mode)
Для Mac OS X 10.9 я установил последнюю версию JRE из Oracle, а затем сбросил JAVA_HOME на /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home.
Я уверен, что есть лучший способ, но заставил меня работать.
На новой установке Mavericks это единственное решение, которое сработало для меня. Пришлось указать sqldeveloper на дом jdk, расположенный здесь (как предложено в этой ветке, чтобы заставить его работать.
Крис
2
OSX Yosemite, ZSH и Java SE Runtime Environment 8, мне пришлось:
Если вам нужно иметь несколько версий 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, как указано в их документах.
Дело в том, что / usr не является правильным каталогом JAVA_HOME. Это нормально, чтобы найти бен / Java. Но иногда сборщики (ant, make) используют JAVA_HOME для ссылки на компилятор javac в lib / tools.jar. Ваше решение не удастся
Olivier Refalo
Ах, спасибо за информацию. Вы правы. Обновлю ответ.
Анжан
0
Для 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
Для пользователей терминалов 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
Ответы:
При установленном дополнительном пакете Java или Oracle JDK добавление одной из следующих строк в файл ~ / .bash_profile будет соответственно устанавливать переменную среды.
Обновление: добавлен флаг -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 вручную:
По крайней мере, таким образом при запуске из командной строки он будет использовать 1.7.
/usr/libexec/java_home
все еще настаивает на 1.6.Обновление : Понимание Java из командной строки в OSX имеет лучшее объяснение того, как это работает.
это способ сделать это. Обратите внимание, что обновление до 1.8 работает просто отлично.
источник
Для меня, Mountain Lion 10.8.2, решение с наибольшим количеством голосов не работает. Я установил JDK 1.7 через Oracle и Maven из доморощенного.
Мое решение взято из файла hadoop-env.sh, который я установил из homebrew. Я добавляю следующее предложение в ~ / .bash_profile, и это работает.
Это решение также работает для 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
Добавьте следующую строку в файл и сохраните ее (: с последующим «x» для vim):
Затем в терминале введите следующие две команды, чтобы увидеть вывод:
Во второй строке вы обновляете содержимое
.bash_profile
файла.источник
Обновление для Java 9 и некоторые аккуратные псевдонимы.
В
.bash_profile
:Обратите внимание, что для последней версии это
9
и не так1.9
.Установить активную Java:
Некоторые дополнительные псевдонимы для переключения между разными версиями:
Тест в терминале:
РЕДАКТИРОВАТЬ: обновление для Java 10
РЕДАКТИРОВАТЬ: Обновление для Java 11
источник
Вышесказанное не работает для меня с инструментами Amazon EC2, потому что это ожидает
bin/java
и т.д. под нимJAVA_HOME
./System/Library/Frameworks/JavaVM.framework/Home
сделал работу.источник
Для OS X вы можете сделать:
источник
В Mac OS X Lion для запуска Visualgc я использовал:
источник
/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
,источник
Лучший (более обновляемый) способ - использовать следующее:
Это должно работать с 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 я установил профиль как
введите в терминале это, чтобы подтвердить:
источник
Мой подход:
.bashrc
Это позволяет очень легко переключаться между 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 и добавляете следующее:
Сценарий сначала удаляет другие версии JDK из PATH, чтобы они не мешали нашей новой версии JDK. Затем он разумно использует / usr / libexec / java_home, который представляет собой команду, в которой перечислены установленные версии JDK. -V аргумент говорит JAVA_HOME , чтобы вернуть путь к JDK с прилагаемой версией, например 1.7. Мы также обновляем PATH, чтобы он указывал на каталог bin недавно найденного каталога JAVA_HOME . В конце мы можем просто выполнить функцию, используя
который выбирает последнюю установленную версию JDK ветки 1.7. Чтобы выбрать конкретную версию, вы можете просто выполнить
вместо. Запустите / usr / libexec / java_home -V чтобы получить более подробную информацию о том, как выбирать версии.
PS Не забудьте получить исходный текст ~ / .bash_profile после его сохранения.
источник
Для Java 11 (JDK 11) его можно найти с помощью следующей команды:
источник
Этот ответ относится к горному льву, а не льву. Мне нужно было сделать это для инструментов командной строки 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 использует
источник
Любой, кто использует AUSKEY из Австралийского налогового управления (ATO), должен удалить AUSKEY. Это решило мои проблемы с JAVA_HOME.
Это также больше не требуется для пользователей MAC. Ях!
источник
Я использую рыбу оболочку на High Sierra 10.13.4 и устанавливаю Java через Brew.
Он не настроен автоматически, поэтому для правильной настройки в моей системе я запускаю:
источник
Просто установите java_home версии 1.8 jdk в
netbeans.conf
файл:раскомментировать строку:
и установите путь к вашему 1.8 JDK, в моем случае:
Этот подход предполагает наличие нескольких версий JDK на Mac OS
источник
Для пользователей терминалов Fish на Mac (я думаю, что это доступно и для Linux), это должно работать:
источник
для пользователя Mac. Ява 8 следует добавить
Ява 6:
ссылка: http://qiita.com/seri_k/items/e978c1339ce51f13e297
источник