Может быть, вам просто нужно перезагрузить компьютер. Вы пробовали это?
Барт
Да, перезагрузил компьютер и терминал ... без изменений.
Venkat
3
Не могли бы вы принять высоко оцененный ответ от @markhellewell ниже? Это помогло бы мне найти его немного быстрее, и это просто замечательно. :)
Тайтай
Ответы:
1410
Первый запуск, /usr/libexec/java_home -Vкоторый выдаст что-то вроде следующего:
MatchingJavaVirtualMachines(3):1.8.0_05, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home1.6.0_65-b14-462, x86_64:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home1.6.0_65-b14-462, i386:"Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Выберите версию, которую вы хотите использовать по умолчанию ( 1.6.0_65-b14-462для аргументов), затем:
@ MattO'Brien это что-то, что зависит от используемой вами оболочки и имеющейся конфигурации, поэтому я не могу дать полное решение для этого…
markhellewell
11
это действительно обратная exportлиния
Дэвид Уэст,
6
Это не сработало для меня. Получите путь от запуска java_home -V и добавьте его в команду экспорта, например, экспорт JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contents / Home"
oden
68
Это работает в Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)также обратите внимание, java_home допускает частичное совпадение, поэтому вам не нужно включать полную версию, так как она найдет последнюю установленную версию. Это делает обновления проще.
Антоных
15
Убедитесь, что вы используете `` not '' для экспорта.
метель
410
Этот ответ является попыткой решить: как управлять java-версией в масштабе всей системы (не только в запущенной в данный момент оболочке), когда несколько версий JDK установлены для целей разработки на macOS El Capitan или более поздней (Sierra, High Sierra, Mojave) . Насколько я могу судить, ни один из текущих ответов не делает этого (*).
Как разработчик, я использую несколько JDK и хочу легко переключаться с одного на другой. Обычно у меня есть последняя стабильная версия для общего пользования и другие для тестов. Но я не хочу, чтобы система (например, когда я запускаю свою IDE) использовала последнюю версию «раннего доступа», которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.
оставить все JDK в их расположении по умолчанию, под /Library/Java/JavaVirtualMachines . Система выберет самую высокую версию по умолчанию.
Чтобы исключить выбор JDK по умолчанию, переименуйте его Contents/Info.plistвInfo.plist.disabled . Этот JDK все еще можно использовать, когда $JAVA_HOMEна него указывают, или явно указывать в сценарии или конфигурации. Это будет просто проигнорировано командой системы java.
Система запуска будет использовать JDK с самой высокой версией среди тех, которые имеют Info.plist файл.
При работе в оболочке с альтернативным JDK выберите свой метод среди существующих ответов ( jenvили пользовательских псевдонимов / сценариев /usr/libexec/java_homeи т. Д.).
(*) Текущие ответы либо устарели (больше не действительны для macOS El Capitan или Sierra), либо относятся только к одному JDK, либо не затрагивают общесистемный аспект. Многие объясняют, как измениться $JAVA_HOME, но это влияет только на текущую оболочку и то, что запускается оттуда. Это не повлияет на приложение, запущенное из панели запуска ОС (если вы не измените нужный файл и не выйдете из системы / не авторизованы), что утомительно. То же самое для jenv, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.
Это ответ, который я искал, так как jenvне JAVA_HOMEмогу установить общесистемную версию Java, то есть ту, которую использует Eclipse.
Джованни Ловато
3
@Rodrigo Да, как упомянуто в «Подробности расследования» (ссылка выше): «Установка JDK также перезаписывает /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Очевидно, именно это запускает новая панель настроек - это единственное исключение, которое я нашел в своем решении: штуковина все еще будет использовать JDK9 (последний установленный мной), но никакое другое приложение Java не делает ".
Хьюг М.
2
Стоит отметить, что Java-версии находятся в / Library / Java / JavaVirtualMachines, и что вышеупомянутое отличное рабочее решение находится в этом контексте.
Андрей Костка
3
Собственно, это лучшее и наиболее функциональное решение этого вопроса. К сожалению так.
Аэродинамика
3
Я не могу отблагодарить вас за этот ответ. Это исправлено запуском приложений из ОС запуска.
Картих Рагхупати,
248
В дополнение к ответам, приведенным выше, я добавил следующие строки в мой .bash_profile(или .zshrcдля MacOS 10.15+), что делает его очень удобным для переключения (включая комментарий @ elektromin для java 9):
alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"
После вставки выполните $ source .bash_profile
Я могу переключиться на Java 8, набрав следующее:
$ j8
java version "1.8.0_102"Java(TM) SE RuntimeEnvironment(build 1.8.0_102-b14)JavaHotSpot(TM)64-BitServer VM (build 25.102-b14, mixed mode)
Это синтаксис для Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
электромин
3
Удивительные простые псевдонимы для быстрого переключения.
gbonetti
Использование, alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"а затем ввод текста j10позволяет переключиться обратно на текущую версию Java (в моем случае Java 10)
intagli
Я бы сделал инструмент cli, похожий на инструмент nvmдля переключения версий Java, но аббревиатура jvmуже означает что-то другое :)
Andy
Я получаю эту ошибку при поиске: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11
56
Маленькая рыбка на основе / usr / libexec / java_home
function jhome
set JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
Если вы не используете fish, вы можете сделать что-то подобное в bash:
как установить переменную JAVA_HOME? Есть ли конкретное место, где я его установил?
Venkat
куда я экспортирую JAVA_HOME? и где это будет сохранено?
Venkat
1
Я обновил ответ. Вы знаете версию SDK, которую вы установили? Имя папки принимает номер версии SDK, поэтому приведенные выше команды могут немного измениться.
Trein
Я установил последний, я думаю, что это 51.
Venkat
Переменная JAVA_HOMEбудет экспортирована в текущем сеансе терминала. Вы можете добавить его к нашему, .bashrcесли хотите. Я адаптирую команды к последней версии.
Trein
32
Использовать jenv - это простой способ.
1. установить jenv
curl -s get.jenv.io | удар
2. Конфиг Дженв
cd ~ / .jenv /андидаты /
Mkdir Java
cd java
Мкдир 1,7
мкдир 1.8
Вместо «jenv use java 1.8» мне пришлось использовать «jenv shell 1.8». «shell» также может быть «global» или «local» в зависимости от необходимости.
Стив Гельман
1
Дженв хорош, когда работает. Тем не менее, я бы рекомендовал против этого, так как он не «действительно» изменяет используемую версию Java по умолчанию, что очевидно, если выполнить команду «/ usr / libexec / java_home -V», только JAVA_HOME. Это вызывает странные проблемы с некоторыми приложениями, например, Eclipse.
Симон
Кроме того, эта параноидальная часть меня предлагает против керлинга что-нибудь, чтобы ударить. Даже если вы думаете, что сайту доверяют, никто не может гарантировать, что он не взломан. Используйте менеджер пакетов вашей ОС.
Я использую аналогичный инструмент: sdkman.io/usage - ИМХО гораздо лучший подход, чем псевдонимы и т. Д.
SathOkh
12
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
}
поместите это в ваш ~ / .profile и используйте его в своем терминале, например setjdk 1.8, setjdk 1.7и setjdk 9т. д. и т. д.
Если у вас нет, removeFromPathто это:
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
macOS El Capitan или новее выберет более высокую версию JDK, доступную в /Library/Java/JavaVirtualMachines, так что для понижения версии вы можете переименовать файл Info.plistво что-то похожее, Info.plist.disabledчтобы ОС выбрала предыдущую версию.
**USAGE**/usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for
command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
tecture requirement.The--exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
which is useful for starting Java command-line tools from launchd plists without hardcoding the full
path to the Java command-line tool.Usagefor bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`Usagefor csh-style shells:% setenv JAVA_HOME `/usr/libexec/java_home`
Сначала выясните, где вы храните переменные среды.
Emacs
bash_profile
файл zshrc
Шаги по настройке переменной среды: -
Скачать JDK от JAVA
установить его двойным щелчком
Теперь настройте переменные окружения в вашем файле
а. Для emacs.profile вы можете использовать эту ссылку или увидеть скриншот ниже
б. Для настройки профиля ZSH -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home2. source ~/.zshrc -Restart zshrc to reflect the changes.3. echo $JAVA_HOME - make sure path is set up properly
---->/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home4. java -version
--> java version "1.8.0_112"Java(TM) SE RuntimeEnvironment(build 1.8.0_112-b16)JavaHotSpot(TM)64-BitServer VM (build 25.112-b16, mixed mode)
Все готово Теперь вы можете легко обновить или снизить версию JAVA.
Я адаптировал ответ от @Alex выше и написал следующее, чтобы исправить код для Java 9.
$ cat ~/.jdk
#!/bin/bash
#list available jdks
alias jdks="/usr/libexec/java_home -V"# jdk version switching - e.g.`jdk 6` will switch to version 1.6
function jdk(){
echo "Switching java version $1";
requestedVersion=$1
oldStyleVersion=8#Set the version
if[ $requestedVersion -gt $oldStyleVersion ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v $1);else
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
fi
echo "Setting JAVA_HOME=$JAVA_HOME"
which java
java -version;}
Переключиться на Java 8
$ jdk 8Switching java version 8Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/usr/bin/java
java version "1.8.0_131"Java(TM) SE RuntimeEnvironment(build 1.8.0_131-b11)JavaHotSpot(TM)64-BitServer VM (build 25.131-b11, mixed mode)
Переключиться на Java 9
$ jdk 9Switching java version 9Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/usr/bin/java
java version "9.0.1"Java(TM) SE RuntimeEnvironment(build 9.0.1+11)JavaHotSpot(TM)64-BitServer VM (build 9.0.1+11, mixed mode)
Спасибо! Вещи примечание, вы должны включить `знаки. и, очевидно, замените 1.8 любой версией, которая вам может понадобиться. В моем случае 13.0.2
Джейми С.
3
Если вы используете fish, и вы используете mac, и вы хотите переключаться между JDK, то ниже для меня работает на mac.
Ответ @ kenglxn не сработал для меня, и я понял, что bcos не установил -g, который является глобальным!
Поместите ниже в ~ / .config / fish / config.fish
alias j8="jhome -v 1.8.0_162"
alias j9="jhome -v 9.0.1"
function jhome
set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
funcsave jhome
Чтобы узнать, какую версию / минорную версию вы установили, вы можете сделать:
/usr/libexec/java_home -V 579msWed14Feb11:44:012018MatchingJavaVirtualMachines(3):9.0.1, x86_64:"Java SE 9.0.1"/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home1.8.0_162, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home1.8.0_121, x86_64:"Java SE 8"/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
На основе ответа @markhellewell я создал несколько псевдонимов, которые сделают это за вас. Просто добавьте их в свой файл запуска оболочки
#list available jdks
alias jdks="/usr/libexec/java_home -V"# jdk version switching - e.g.`jdk 6` will switch to version 1.6
function jdk(){
echo "Switching java version";
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
java -version;}
Вот как я делаю это на моем Linux (Ubuntu / Mint mate) , я думаю, Mac может сделать это аналогичным образом.
Установить и настроить
шаги:
[Основное - часть]
Загрузите jdk ( файл .tgz ) вручную.
Распакуйте и переименуйте правильно, в нужном месте.
например /mnt/star/program/java/jdk-1.8
Сделайте программную ссылку, которая будет изменена для переключения версии Java позже.
например ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Таким образом , /mnt/star/program/java/javaэто мягкая ссылка.
Установите JAVA_HOMEв стартовом скрипте.
Может использовать файл, как /etc/profile.d/eric.sh, или просто использовать ~/.bashrc.
напримерJAVA_HOME=/mnt/star/program/java/java
Затем откройте новую оболочку bash. java -versionдолжен напечатать версию Java.
[Больше версия - часть]
При необходимости загрузите и установите больше версий Java, как описано выше.
например /mnt/star/program/java/jdk-11
[Переключатель - часть]
В ~/.bashrc, определить переменную для различных версий Java.
например _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11' _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8' # dir of default version, _E_JAVA_HOME_D=$_E_JAVA_HOME_8
В ~/.bashrc, определите команду для переключения версии Java.
например ## switch java version, alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME" alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME" # default java version, alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME" alias jv="java -version"
В терминале, source ~/.bashrcчтобы изменения вступили в силу.
Затем можно переключиться с помощью определенных команд.
Команды - сверху конфиг
Команды:
jv11
Переключиться на Java 11
jv8
Переключиться на Java 8
jvd
Переключиться на версию Java по умолчанию, которая обозначена как _E_JAVA_HOME_Dопределено выше.
jv
Показать версию Java.
Пример вывода:
eric@eric-pc:~$ jv
java version "1.8.0_191"Java(TM) SE RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
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)
eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"Java(TM) SE RuntimeEnvironment(build 1.8.0_191-b12)JavaHotSpot(TM)64-BitServer VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$
Механизм
Он переключается путем изменения программной ссылки, которая используется как JAVA_HOME.
Советы
На моей машине, когда я устанавливаю jdk вручную, я сохраняю минорную версию, затем делаю мягкую ссылку с основной версией, но без минорной версии.
например,
// это фактический каталог, jdk1.8.0_191
// это мягкая ссылка на jdk1.8.0_191 jdk-8
// это мягкая ссылка на jdk-8илиjdk-11 java
Я определяю псевдоним команды ~/.bashrc, но определяю переменную в отдельном файле.
Я использую ~/.eric_varдля определения переменных, и ~/.bashrcбудет его источником (например source $HOME/.eric_var).
Простой способ включить отдельно установленный JDK в список, заданный этим, /usr/libexec/java_home -V- создать символическую ссылку на каталог следующим образом:
export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)
alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'
export JAVA_HOME=$JAVA_13_HOME
Это простой JavaOne, который можно использовать для определения текущей версии Java. Версия может использоваться в оболочке, которая открывается после выбора версии в инструменте.
/usr/libexec/java_home
говорит вам выполнение ?Ответы:
Первый запуск,
/usr/libexec/java_home -V
который выдаст что-то вроде следующего:Выберите версию, которую вы хотите использовать по умолчанию (
1.6.0_65-b14-462
для аргументов), затем:или вы можете указать только основную версию, например:
Теперь, когда вы бежите,
java -version
вы увидите:Добавить
export JAVA_HOME…
строку в файл инициализации вашей оболочки.Для Баша (как утверждает антоних ):
Для рыбы (как заявлено ормурином)
источник
export
линияexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
также обратите внимание, java_home допускает частичное совпадение, поэтому вам не нужно включать полную версию, так как она найдет последнюю установленную версию. Это делает обновления проще.Этот ответ является попыткой решить: как управлять java-версией в масштабе всей системы (не только в запущенной в данный момент оболочке), когда несколько версий JDK установлены для целей разработки на macOS El Capitan или более поздней (Sierra, High Sierra, Mojave) . Насколько я могу судить, ни один из текущих ответов не делает этого (*).
Как разработчик, я использую несколько JDK и хочу легко переключаться с одного на другой. Обычно у меня есть последняя стабильная версия для общего пользования и другие для тестов. Но я не хочу, чтобы система (например, когда я запускаю свою IDE) использовала последнюю версию «раннего доступа», которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.
Следующий подход работает как минимум с Java 7-12 (ранний доступ на момент написания этой статьи), с Oracle JDK или OpenJDK (включая сборки AdoptOpenJDK, выпущенные после середины октября 2018 г. ).
Решение без сторонних инструментов:
/Library/Java/JavaVirtualMachines
. Система выберет самую высокую версию по умолчанию.Contents/Info.plist
вInfo.plist.disabled
. Этот JDK все еще можно использовать, когда$JAVA_HOME
на него указывают, или явно указывать в сценарии или конфигурации. Это будет просто проигнорировано командой системыjava
.Система запуска будет использовать JDK с самой высокой версией среди тех, которые имеют
Info.plist
файл.При работе в оболочке с альтернативным JDK выберите свой метод среди существующих ответов (
jenv
или пользовательских псевдонимов / сценариев/usr/libexec/java_home
и т. Д.).Подробности расследования в этом суть .
(*) Текущие ответы либо устарели (больше не действительны для macOS El Capitan или Sierra), либо относятся только к одному JDK, либо не затрагивают общесистемный аспект. Многие объясняют, как измениться
$JAVA_HOME
, но это влияет только на текущую оболочку и то, что запускается оттуда. Это не повлияет на приложение, запущенное из панели запуска ОС (если вы не измените нужный файл и не выйдете из системы / не авторизованы), что утомительно. То же самое для jenv, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.источник
jenv
неJAVA_HOME
могу установить общесистемную версию Java, то есть ту, которую использует Eclipse./Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
. Очевидно, именно это запускает новая панель настроек - это единственное исключение, которое я нашел в своем решении: штуковина все еще будет использовать JDK9 (последний установленный мной), но никакое другое приложение Java не делает ".В дополнение к ответам, приведенным выше, я добавил следующие строки в мой
.bash_profile
(или.zshrc
для MacOS 10.15+), что делает его очень удобным для переключения (включая комментарий @ elektromin для java 9):После вставки выполните
$ source .bash_profile
Я могу переключиться на Java 8, набрав следующее:
источник
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
а затем ввод текстаj10
позволяет переключиться обратно на текущую версию Java (в моем случае Java 10)nvm
для переключения версий Java, но аббревиатураjvm
уже означает что-то другое :)/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
Маленькая рыбка на основе / usr / libexec / java_home
Если вы не используете fish, вы можете сделать что-то подобное в bash:
Затем, чтобы переключиться между Java сделать:
ссылка: https://gist.github.com/kenglxn/1843d552dff4d4233271
источник
export JAVA_HOME=(/usr/libexec/java_home $argv)
вместо второй строки вашейjhome
функции.Это немного сложно, но попробуйте выполнить шаги, описанные в Установка Java на OS X 10.9 (Mavericks) . По сути, вам придется обновить свой псевдоним до
java
.Шаг за шагом:
После установки JDK 1.7 вам нужно будет сделать
sudo ln -snf
, чтобы изменить ссылку на текущуюjava
. Для этого откройте Терминал и введите команду:Обратите внимание, что каталог
jdk1.7.0_51.jdk
может меняться в зависимости от установленной версии SDK.Теперь вам нужно
JAVA_HOME
указать, гдеjdk_1.7.0_xx.jdk
был установлен. Откройте снова Терминал и введите:Вы можете добавить
export JAVA_HOME
строку выше в вашем.bashrc
файле, чтобы иметь Java постоянно в вашем терминалеисточник
JAVA_HOME
будет экспортирована в текущем сеансе терминала. Вы можете добавить его к нашему,.bashrc
если хотите. Я адаптирую команды к последней версии.Использовать jenv - это простой способ.
1. установить jenv
2. Конфиг Дженв
3.Симлинк путь JDK
4.Все все готово
команда переключения:
установить по умолчанию:
источник
установить JDK, а не только JRE
дает
следующий
TextEdit покажет вам пустую страницу, которую вы можете заполнить.
добавить в документ:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
в терминале:
попробуйте команду:
javac -version
должен вывести:
источник
ТЛ; др
Добавьте строку:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
в файл
~/.bash_profile
(замените jdk1.8.0_144.jdk загруженной версией)
тогда
source ~/.bash_profile
источник
Используйте jenv, это как менеджер среды Java. Это супер легко использовать и чистить
Для Mac выполните следующие действия:
Установка: Если вы используете bash, выполните следующие действия:
Добавьте нужные версии JVM в jenv:
Проверьте установленные версии:
Установите версию Java, которую вы хотите использовать:
источник
поместите это в ваш ~ / .profile и используйте его в своем терминале, например
setjdk 1.8
,setjdk 1.7
иsetjdk 9
т. д. и т. д.Если у вас нет,
removeFromPath
то это:function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }
источник
Четыре простых шага с использованием терминала для людей, которые используют процесс по умолчанию .. :)
echo $JAVA_HOME
дает вам текущий дом Java. Например:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
перенесет вас в папку, где вы обычно устанавливаете jdks (это может отличаться для ваших машин)ls
показывает вам доступные папки ( как правило , это будет иметь номер версии, например:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
поменяю java домой ..источник
добавить следующую команду в
~/.zshenv
файлисточник
macOS El Capitan или новее выберет более высокую версию JDK, доступную в
/Library/Java/JavaVirtualMachines
, так что для понижения версии вы можете переименовать файлInfo.plist
во что-то похожее,Info.plist.disabled
чтобы ОС выбрала предыдущую версию.источник
С официальной страницы Apple java_home (1) :
источник
Если вы все еще не можете установить его. используя эту команду.
экспорт JAVA_HOME =
/usr/libexec/java_home -v 1.8
тогда вы должны использовать это.
экспорт JAVA_HOME =
$(/usr/libexec/java_home -v 1.8)
это обязательно сработает.
источник
Сначала выясните, где вы храните переменные среды.
Шаги по настройке переменной среды: -
Теперь настройте переменные окружения в вашем файле
а. Для emacs.profile вы можете использовать эту ссылку или увидеть скриншот ниже
б. Для настройки профиля ZSH -
Все готово Теперь вы можете легко обновить или снизить версию JAVA.
источник
JDK Switch Script
Я адаптировал ответ от @Alex выше и написал следующее, чтобы исправить код для Java 9.
Переключиться на Java 8
Переключиться на Java 9
источник
Вы можете добавить его в свой .bash_profile, чтобы установить версию по умолчанию.
источник
Если вы используете fish, и вы используете mac, и вы хотите переключаться между JDK, то ниже для меня работает на mac.
Ответ @ kenglxn не сработал для меня, и я понял, что bcos не установил -g, который является глобальным!
Поместите ниже в ~ / .config / fish / config.fish
Чтобы узнать, какую версию / минорную версию вы установили, вы можете сделать:
источник
Если у вас есть несколько версий, и вы хотите что-то запустить с использованием определенной версии, используйте этот пример:
источник
На основе ответа @markhellewell я создал несколько псевдонимов, которые сделают это за вас. Просто добавьте их в свой файл запуска оболочки
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
источник
Вот как я делаю это на моем Linux (Ubuntu / Mint mate) , я думаю, Mac может сделать это аналогичным образом.
Установить и настроить
шаги:
например
/mnt/star/program/java/jdk-1.8
например
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Таким образом ,
/mnt/star/program/java/java
это мягкая ссылка.JAVA_HOME
в стартовом скрипте.Может использовать файл, как
/etc/profile.d/eric.sh
, или просто использовать~/.bashrc
.например
JAVA_HOME=/mnt/star/program/java/java
java -version
должен напечатать версию Java.например
/mnt/star/program/java/jdk-11
~/.bashrc
, определить переменную для различных версий Java.например
_E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
_E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
# dir of default version,
_E_JAVA_HOME_D=$_E_JAVA_HOME_8
~/.bashrc
, определите команду для переключения версии Java.например
## switch java version,
alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
# default java version,
alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
alias jv="java -version"
source ~/.bashrc
чтобы изменения вступили в силу.Команды - сверху конфиг
Команды:
jv11
Переключиться на Java 11
jv8
Переключиться на Java 8
jvd
Переключиться на версию Java по умолчанию, которая обозначена как
_E_JAVA_HOME_D
определено выше.jv
Показать версию Java.
Пример вывода:
Механизм
JAVA_HOME
.Советы
На моей машине, когда я устанавливаю jdk вручную, я сохраняю минорную версию, затем делаю мягкую ссылку с основной версией, но без минорной версии.
например,
// это фактический каталог,
jdk1.8.0_191
// это мягкая ссылка на
jdk1.8.0_191
jdk-8
// это мягкая ссылка на
jdk-8
илиjdk-11
java
Я определяю псевдоним команды
~/.bashrc
, но определяю переменную в отдельном файле.Я использую
~/.eric_var
для определения переменных, и~/.bashrc
будет его источником (напримерsource $HOME/.eric_var
).источник
Простой способ включить отдельно установленный JDK в список, заданный этим,
/usr/libexec/java_home -V
- создать символическую ссылку на каталог следующим образом:Например, чтобы зарегистрировать JDK, включенный в Android Studio (1.8.0_152 на момент написания), используйте:
Теперь в
java_home
списке JDKMatching Java Virtual Machines
и вы можете выбрать его, как описано выше.источник
Я сделал это для местного терминала с
источник
Этот инструмент сделает всю работу за вас:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
Это простой JavaOne, который можно использовать для определения текущей версии Java. Версия может использоваться в оболочке, которая открывается после выбора версии в инструменте.
источник
СЛИШКОМ ЛЕГКОЕ РЕШЕНИЕ: Какая головная боль - это было быстрое простое решение, которое сработало для меня.
Mac OS Sierra Версия 10.12.13
Используйте сочетания клавиш: CMD + SHIFT + G - введите «/ Library /»
Найдите папку JAVA
Щелкните правой кнопкой мыши папку Java = Переместить в корзину (требуется пароль)
Установить: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Скачать Javascript SDK
источник