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

781

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

Venkat
источник
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)
markhellewell
источник
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

kenglxn
источник
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 постоянно в вашем терминале

Trein
источник
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

Yuantao
источник
Чистое и приятное решение.
пинтурическое
Вместо «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
user2708060
источник
26

ТЛ; др

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

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

в файл

~/.bash_profile

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

тогда source ~/.bash_profile

dustinevan
источник
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
slal
источник
Это сработало идеально для меня, спасибо!
Фернандо Габриэли
Я использую аналогичный инструмент: 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` 
xsilen T
источник
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)

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

RohitKumar
источник
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
Gob00st
источник
2

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

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
MonstroDev
источник
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

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

friederbluemle
источник
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
Trackhe
источник
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. Бум готов
eric323
источник