Как установить или изменить версию Java (JDK) по умолчанию на OS X?
Как вы можете изменить версию Java по умолчанию на Mac?
40 ответов
Первый забег /usr/libexec/java_home -V
который выведет что-то вроде следующего:
Matching Java Virtual Machines (3):
1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.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
ради аргументов) тогда:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`
или вы можете указать только основную версию, например:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
Теперь, когда вы бежите java -version
ты увидишь:
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
Просто добавьте export JAVA_HOME…
строка в файл инициализации вашей оболочки.
Этот ответ является попыткой решить: как управлять java-версией в масштабе всей системы (не только в запущенной в настоящее время оболочке), когда несколько версий JDK установлены для целей разработки на macOS El Capitan или новее (Sierra, High Sierra, Mojave). Насколько я могу судить, ни один из текущих ответов не делает этого (*).
Как разработчик, я использую несколько JDK и хочу легко переключаться с одного на другой. Обычно у меня есть последняя стабильная версия для общего пользования и другие для тестов. Но я не хочу, чтобы система (например, когда я запускаю свою IDE) использовала последнюю версию "раннего доступа", которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.
Следующий подход работает как минимум с Java 7-12 (ранний доступ на момент написания этой статьи), с Oracle JDK или OpenJDK (включая сборки AdoptOpenJDK, выпущенные после середины октября 2018 года).
Решение без сторонних инструментов:
- оставить все 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, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.
Добавляя к вышеупомянутым ответам, я помещаю следующие строки в мой .bash_profile
что делает его действительно удобным для переключения (включая комментарий @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 Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
Я поделюсь своим опытом работы с macOS Big Sur v11.4, лучший способ справиться с этими проблемами - установить java с помощью Homebrew:
1 - Установите Homebrew.
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2 - Установите Homebrew Cask.
$ brew tap homebrew/cask-versions
$ brew update
$ brew tap caskroom/cask
3 - Установите последнюю версию Java
$ brew cask install java
4 - Установите другие необходимые версии Java (Java8, Java11, Java13).
$ brew tap adoptopenjdk/openjdk
$ brew cask install adoptopenjdk8
$ brew cask install adoptopenjdk11
$ brew cask install adoptopenjdk13
$ brew cask install adoptopenjdk14
5 - Переключение между разными версиями Java
При переключении между разными версиями Java вам нужно только добавить следующее в ваш или.
В этом случае мы хотим иметь возможность переключаться между Java8, Java11, Java13 и Java14:
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'
alias java14='export JAVA_HOME=$JAVA_14_HOME'
# default to Java 14
java14
6 - Перезарядка
.bash_profile
или же
.zshrc
чтобы псевдонимы вступили в силу:
$ source ~/.bash_profile
или же
$ source ~/.zshrc
7 - Наконец, вы можете использовать псевдонимы для переключения между различными версиями Java.
$ java8
$ java -version
java version "1.8.0_261"
Для получения дополнительной информации вы можете увидеть этот пост: Как использовать Brew для установки Java на Mac
Маленькая рыбка на основе /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:
#!/bin/bash
jhome () {
export JAVA_HOME=`/usr/libexec/java_home $@`
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
}
Затем, чтобы переключиться между Java сделать:
$> jhome #switches to latest java
$> jhome -v 1.7 #switches to java 1.7
$> jhome -v 1.6 #switches to java 1.6
ссылка: https://gist.github.com/kenglxn/1843d552dff4d4233271
Использовать jenv - это простой способ.
1. установить jenv
curl -s get.jenv.io | удар
2. Конфиг Дженв
cd ~/.jenv/андидаты / Mkdir Java cd java Мкдир 1,7 MKDIR 1,8
3.Симлинк путь JDK
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~/.jenv/ sources/java/1.7 ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~/.jenv/андидаты / java / 1.8
4.Все все готово
команда переключения:
JENV использовать Java 1,8
установить по умолчанию:
jenv default java 1.7
Установить JDK, а не только JRE
/usr/libexec/java_home -v 1.8
дает
/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
следующий
touch .bash_profile
open -a TextEdit.app .bash_profile
TextEdit покажет вам пустую страницу, которую вы можете заполнить.
добавить в документ: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
в терминале:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
попробуйте команду:
javac -version
должен вывести:
javac 1.8.0_111
Это немного сложно, но попробуйте выполнить шаги, описанные в разделе Установка Java на OS X 10.9 (Mavericks). По сути, вам придется обновить свой псевдоним до java
,
Шаг за шагом:
После установки JDK 1.7 вам нужно будет выполнить sudo ln -snf
чтобы изменить ссылку на текущую java
, Для этого откройте Терминал и введите команду:
sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
Обратите внимание, что каталог jdk1.7.0_51.jdk
может меняться в зависимости от установленной версии SDK.
Теперь вам нужно установить JAVA_HOME
указать куда jdk_1.7.0_xx.jdk
был установлен. Снова откройте Терминал и введите:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"
Вы можете добавить export JAVA_HOME
строка выше в вашем .bashrc
файл, чтобы иметь Java постоянно в вашем терминале
ТЛ; др
Добавьте строку:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
в файл
~/.bash_profile
заменить на загруженную версию.
затем source ~/.bash_profile
Используйте jenv, это как менеджер среды Java. Это супер легко использовать и чистить
Для Mac выполните следующие действия:
brew install jenv
git clone https://github.com/gcuisinier/jenv.git ~/.jenv
Установка: Если вы используете bash, выполните следующие действия:
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
Добавьте нужные версии JVM в jenv:
jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home
Проверьте установленные версии:
jenv versions
Установите версию Java, которую вы хотите использовать:
jenv global oracle64-1.6.0
Рассмотрите следующий подход только для изменения JDK для каждой отдельной вкладки вашего терминала (т.е.
iTerm
).
Имея в
/Library/Java/JavaVirtualMachines
путь к двум следующим jdks
-
openjdk8u275-b01
-
openjdk-11.0.9.1+1
А в файле следующее:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.9.1+1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
Если вы откроете
Iterm
с первой Tab A и выполните следующее:
javac -version
javac 11.0.9.1
java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)
Результат правильный и ожидаемый
Но если вы откроете вторую вкладку B и переопределите этот JDK, сделайте следующее:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk8u275-b01/Contents/Home/
export PATH=$JAVA_HOME/bin:$PATH
потом
javac -version
javac 1.8.0_275
java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)
Работает нормально. Конечно, если вкладка B закрыта или вы открываете новую вкладку C, все работает в соответствии с
.bash_profile
настройки
Четыре простых шага с использованием терминала для людей, которые используют процесс по умолчанию..:)
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 home..
macOS El Capitan или новее выберет более новую версию JDK, доступную в/Library/Java/JavaVirtualMachines
, поэтому для перехода на более раннюю версию вы можете переименовать файл Info.plist
к чему-то другому, например Info.plist.disabled
так что ОС выберет предыдущую версию.
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:?;;")
}
Вы можете добавить его в свой.bash_profile, чтобы версия была установлена по умолчанию.
//Open bash profile
open ~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
// run bash profile
source ~/.bash_profile
Добавьте в свой
~/.bash_profile
и соответственно установите версию java по умолчанию.
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
# default to Java 8
java8
Я использую macOS и установил Java, используя
brew
Бегать
/usr/libexec/java_home -V
вы получите всю имеющуюся у вас версию Java
Пример:-
Matching Java Virtual Machines (3):
17.0.7 (x86_64) "Amazon.com Inc." - "Amazon Corretto 17" /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
11.0.19 (x86_64) "Amazon.com Inc." - "Amazon Corretto 11" /Users/abhishek.khaiwale/Library/Java/JavaVirtualMachines/corretto-11.0.19/Contents/Home
11.0.19 (x86_64) "Amazon.com Inc." - "Amazon Corretto 11" /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
Если вам нужна версия Java 11.0.19
Бегать
export JAVA_HOME=`/usr/libexec/java_home -v 11.0.19`
Добавить следующую команду в ~/.zshenv
файл
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
- Добавьте следующую строку кода в свой .zshrc (или bash_profile):
псевдоним j='f(){экспорт JAVA_HOME=
/usr/libexec/java_home -v $1
};f'
- Сохранить в сеанс:
$ source.zshrc
- Команда запуска (например, j 13, j14, j1.8...)
1,8 долл. США
Пояснение Это параметризовано, поэтому вам не нужно обновлять сценарий, как другие опубликованные решения. Если у вас не установлена JVM, вам сообщат. Примеры ниже:
/Users/user/IDE/project $ j 1.8
/Users/user/IDE/project $ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)
/Users/user/IDE/project $ j 13
/Users/user/IDE/project $ java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
/Users/user/IDE/project $ j 1.7
Unable to find any JVMs matching version "1.7".
Проверить версию Java: java -версия
Переключение между версиями: https://devqa.io/brew-install-java/
открыть ~/.bash_profile
экспорт JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
экспорт JAVA_11_HOME=$(/usr/libexec/java_home -v11)
псевдоним java8='экспорт JAVA_HOME=$JAVA_8_HOME' псевдоним java11='экспорт JAVA_HOME=$JAVA_11_HOME'
источник ~/.bash_profile
Когда мы переключаемся на java11 или java8, команда java -version не показывает правильную версию.
В этом случае используйте mvn -version, чтобы увидеть, что для создания решения используется правильная версия Java.
JDK Switch Script
Я адаптировал ответ от @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 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Переключиться на Java 9
$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
С официальной страницы Apple java_home(1):
**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.
Usage for bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`
Usage for csh-style shells:
% setenv JAVA_HOME `/usr/libexec/java_home`
Простой способ включить отдельно установленный JDK в список, заданный /usr/libexec/java_home -V
это ссылка на каталог следующим образом:
sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk
Например, чтобы зарегистрировать JDK, включенный в Android Studio (1.8.0_152 на момент написания), используйте:
sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk
Сейчас java_home
перечислит JDK под Matching Java Virtual Machines
и вы можете выбрать его, как описано выше.
Раньше я использовал псевдонимы в.zshrc для удобного переключения между версиями, но сегодня я использую SDKMAN. SDKMAN также может обрабатывать установку Java по умолчанию для системы, а также загрузку и установку новых версий Java.
После установки sdkman вы можете выполнять команды, аналогичные тем, которые доступны с помощью инструмента nvm для обработки версий узлов.
sdk list java
перечислит версии Java, доступные в вашей системе, а также доступные онлайн для установки, включая их идентификатор, который вы можете использовать в sdk use
, sdk default
а также sdk install
команды.
например, чтобы установить Amazon Corretto 11.0.8 и спросить, должно ли оно быть новым по умолчанию, сделайте следующее:sdk install java 11.0.8-amzn
Я также регулярно использую функцию .sdkmanrc
файл. Если вы поместите это в каталог на своем компьютере и запуститеsdk env
в каталоге, то вы можете настроить версии инструментов, используемые только в этом каталоге. Также возможно сделать версии инструмента переключения sdkman автоматически, используяsdkman_auto_env=true
конфигурация.
sdkman также поддерживает работу с другими инструментами для JVM, такими как gradle, kotlin, maven и другими.
Для получения дополнительной информации посетите https://sdkman.io/usage.
Сначала выясните, где вы храните переменные среды.
- Emacs
- bash_profile
- файл zshrc
Шаги по настройке переменной среды:-
- Загрузите JDK от JAVA
- установить его двойным щелчком
Теперь настройте переменные окружения в вашем файле
а. Для emacs.profile вы можете использовать эту ссылку или увидеть скриншот ниже
б. Для настройки профиля ZSH -
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. 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/Home
4. java -version
--> java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
Все готово Теперь вы можете легко обновить или ухудшить версию JAVA.
Если вы все еще не можете установить его. используя эту команду.
экспорт JAVA_HOME=/usr/libexec/java_home -v 1.8
тогда вы должны использовать это.
экспорт JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
это обязательно сработает.
Если вы используете 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 579ms Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_162, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
Это поможет вам сменить версию JAVA на вашем устройстве MacOS. Это может быть полезно для работы с приложениями, которые не работают с обновленными версиями JAVA. Например, такие приложения, как Cassandra, будут работать только с JAVA версии 8.
Во-первых, вам нужно убедиться, что у вас установлено несколько версий JAVA.
Откройте новое окно терминала и введите:
/usr/libexec/java_home -V
Ваш вывод должен выглядеть так:
Matching Java Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
Обратите внимание, что доступны два JDK. Если вы не заметили версию Java, на которую нужно перейти, скачайте и установите соответствующую отсюда (JDK 8 представлен как 1.8). После установки соответствующего JDK повторите этот шаг.
Обратите внимание на версию JDK, на которую вы хотите переключиться. Например, «11.0» и «1.8» — это версии JDK, доступные в приведенном выше примере.
Переключитесь на нужную версию. Например, если вы хотите переключиться на JDK 8, введите следующую строку:
экспорт JAVA_HOME=
/usr/libexec/java_home -v 1.8
Для 11.0 поменяйте местами «1.8» на «11.0».
Проверьте свою версию JDK, введя в Терминал:
Java-версия
Если вы правильно выполнили все шаги, версия JDK должна соответствовать той, которую вы указали на последнем шаге.
(Необязательно) Чтобы сделать это версией JDK по умолчанию, введите в Терминале следующее:
открыть ~/.bash_profile
Затем добавьте ввод терминала из шага 3 в этот файл:
ПЕРЕЙТИ НА JAVA ВЕРСИИ 8
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
Сохраните и закройте файл.
Сделанный.
Если у вас есть несколько версий, и вы хотите что-то запустить с использованием определенной версии, используйте этот пример:
/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
добавьте эту функцию в bashrc или zshrc,
java-change [version]
выбрать JDK
# set and change java versions
function java-change() {
echo "----- old java version -----"
java -version
if [ $# -ne 0 ]; then
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
echo "----- new java version -----"
java -version
}