Как установить или изменить версию 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 настройки

Четыре простых шага с использованием терминала для людей, которые используют процесс по умолчанию..:)

  1. echo $JAVA_HOMEдает вам текущую java-версию. Например:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ перенесет вас в папку, где вы обычно устанавливаете jdks (для ваших машин это может быть иначе)

  3. ls показывает доступные папки (обычно в нем есть номера версий, например: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. 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` 
  1. Добавьте следующую строку кода в свой .zshrc (или bash_profile):

псевдоним j='f(){экспорт JAVA_HOME=/usr/libexec/java_home -v $1 };f'

  1. Сохранить в сеанс:

$ source.zshrc

  1. Команда запуска (например, 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.

Сначала выясните, где вы храните переменные среды.

  1. Emacs
  2. bash_profile
  3. файл zshrc

Шаги по настройке переменной среды:-

  1. Загрузите JDK от JAVA
  2. установить его двойным щелчком
  3. Теперь настройте переменные окружения в вашем файле

    а. Для 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 повторите этот шаг.

  1. Обратите внимание на версию JDK, на которую вы хотите переключиться. Например, «11.0» и «1.8» — это версии JDK, доступные в приведенном выше примере.

  2. Переключитесь на нужную версию. Например, если вы хотите переключиться на JDK 8, введите следующую строку:

    экспорт JAVA_HOME=/usr/libexec/java_home -v 1.8

    Для 11.0 поменяйте местами «1.8» на «11.0».

  3. Проверьте свою версию JDK, введя в Терминал:

    Java-версия

Если вы правильно выполнили все шаги, версия JDK должна соответствовать той, которую вы указали на последнем шаге.

  1. (Необязательно) Чтобы сделать это версией 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
}
Другие вопросы по тегам