Как установить или изменить версию Java (JDK) по умолчанию на OS X?


781

Как вы можете изменить версию Java по умолчанию на Mac?


2
что /usr/libexec/java_homeговорит вам выполнение ?
— Барт

2
/ usr / libexec / java_home возвращает /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
— Venkat

Может быть, вам просто нужно перезагрузить компьютер. Вы пробовали это?
— Барт

Да, перезагрузил компьютер и терминал ... без изменений.
— Venkat

3
Не могли бы вы принять высоко оцененный ответ от @markhellewell ниже? Это помогло бы мне найти его немного быстрее, и это просто замечательно. :)
— Тайтай

Ответы:


1410

Первый запуск, /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… строку в файл инициализации вашей оболочки.

Для Баша (как утверждает антоних ):

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Для рыбы (как заявлено ормурином)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)

2
@ 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) использовала последнюю версию «раннего доступа», которая у меня есть на данный момент. Я хочу контролировать систему по умолчанию, и она должна быть последней стабильной.

Следующий подход работает как минимум с 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, это круто и все такое, но, насколько я могу судить, оно просто меняет переменные окружения, поэтому оно имеет то же ограничение.


16
Это ответ, который я искал, так как 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 Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

5
Это синтаксис для 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:

#!/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


1
это изменяется только для конкретного сеанса терминала. Есть ли способ обновить это, чтобы изменить его в масштабе всей системы?
— ENG618

1
Я должен был написать export JAVA_HOME=(/usr/libexec/java_home $argv)вместо второй строки вашей jhomeфункции.
— Даниэль А.А. Пельсмакер,

32

Это немного сложно, но попробуйте выполнить шаги, описанные в Установка 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 постоянно в вашем терминале


1
как установить переменную 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

3.Симлинк путь JDK

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv /андидаты / java / 1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / sources / java / 1.8

4.Все все готово

команда переключения:

JENV использовать Java 1,8

установить по умолчанию:

jenv default java 1.7


Чистое и приятное решение.
— пинтурическое

Вместо «jenv use java 1.8» мне пришлось использовать «jenv shell 1.8». «shell» также может быть «global» или «local» в зависимости от необходимости.
— Стив Гельман

1
Дженв хорош, когда работает. Тем не менее, я бы рекомендовал против этого, так как он не «действительно» изменяет используемую версию Java по умолчанию, что очевидно, если выполнить команду «/ usr / libexec / java_home -V», только JAVA_HOME. Это вызывает странные проблемы с некоторыми приложениями, например, Eclipse.
— Симон

Кроме того, эта параноидальная часть меня предлагает против керлинга что-нибудь, чтобы ударить. Даже если вы думаете, что сайту доверяют, никто не может гарантировать, что он не взломан. Используйте менеджер пакетов вашей ОС.
— Александр Кравец

Эта информация устарела. Проверьте официальную документацию или более подробные инструкции .
— fabianopinto

28

установить 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

26

ТЛ; др

Добавьте строку:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

в файл

~/.bash_profile

(замените jdk1.8.0_144.jdk загруженной версией)

тогда source ~/.bash_profile


22

Используйте 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

Это сработало идеально для меня, спасибо!
— Фернандо Габриэли

Я использую аналогичный инструмент: 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:?;;") }


12

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

  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 домой ..

8

добавить следующую команду в ~/.zshenvфайл

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

8

macOS El Capitan или новее выберет более высокую версию JDK, доступную в /Library/Java/JavaVirtualMachines, так что для понижения версии вы можете переименовать файл Info.plistво что-то похожее, Info.plist.disabledчтобы ОС выбрала предыдущую версию.


Самый простой способ (: Спасибо
— Сатиши Шринивасан

6

С официальной страницы 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`

6

Если вы все еще не можете установить его. используя эту команду.

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

тогда вы должны использовать это.

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

это обязательно сработает.


6

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

  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.


5

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)

4

Вы можете добавить его в свой .bash_profile, чтобы установить версию по умолчанию.

//Open bash profile
open ~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

// run bash profile
source ~/.bash_profile

Спасибо! Вещи примечание, вы должны включить `знаки. и, очевидно, замените 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                                                                              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

2

Если у вас есть несколько версий, и вы хотите что-то запустить с использованием определенной версии, используйте этот пример:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

2

На основе ответа @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; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4


2

Вот как я делаю это на моем 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 Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server 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 Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server 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).


1

Простой способ включить отдельно установленный 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и вы можете выбрать его, как описано выше.


1

Я сделал это для местного терминала с

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

0

Этот инструмент сделает всю работу за вас:

http://www.guigarage.com/2013/02/change-java-version-on-mac-os/

Это простой JavaOne, который можно использовать для определения текущей версии Java. Версия может использоваться в оболочке, которая открывается после выбора версии в инструменте.


-6

СЛИШКОМ ЛЕГКОЕ РЕШЕНИЕ: Какая головная боль - это было быстрое простое решение, которое сработало для меня.

Mac OS Sierra Версия 10.12.13

  1. Используйте сочетания клавиш: CMD + SHIFT + G - введите «/ Library /»

  2. Найдите папку JAVA

  3. Щелкните правой кнопкой мыши папку Java = Переместить в корзину (требуется пароль)

  4. Установить: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Скачать Javascript SDK

  5. Убедитесь, что новая папка JAVA появляется в / LIBRARY /
  6. Установить Eclipse | Установите Eclipse IDE для разработчиков Java
  7. Бум готов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.