Як встановити або змінити типову версію Java (JDK) на ОС X?


777

Як можна змінити типову версію Java на mac?


2
що /usr/libexec/java_homeвам каже виконавець ?
Барт

2
/ usr / libexec / java_home return /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat

Можливо, вам просто потрібно перезавантажити. Ви пробували це?
Барт

Так, перезавантажили комп'ютер і термінал ... без змін.
Венкат

3
Чи можете ви прийняти відповідь з високою оцінкою від @markhellewell нижче? Це допомогло б мені знайти це трохи швидше, і це просто приємно. :)
Тайтай

Відповіді:


1406

Перший запуск, /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…рядок до файлу init вашої оболонки.

Для Баша (як заявив Антоні ):

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

Для риб (як заявляє ormurin)

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

2
@ MattO'Brien - це щось, що залежить від оболонки, яку ви використовуєте, і конфігурації, яка у вас є, тому я не можу дати повне рішення для цього…
markhellewell

11
ці справді є зворотним exportрядком лінії
Девід Уест,

6
Це для мене не вийшло. Grab шляху від запуску java_home -V і додати до команди експорту, як цей експорт JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Зміст / Home"
Одна

68
Це працює в Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- також зауважте, java_home дозволяє часткові збіги, тому вам не доведеться включати повну версію, оскільки вона знайде останню встановлену версію. Це полегшує оновлення.
антоні

14
Переконайтеся, що ви використовуєте "не" для експорту.
хуртовина

407

Ця відповідь є спробою вирішити: як керувати версією java-версії на всій системі (не тільки в поточній запущеній оболонці), коли для розробки в macOS El Capitan або новіших версіях (Sierra, High Sierra, Mojave) встановлено кілька версій JDK . Наскільки я можу сказати, жодна з нинішніх відповідей цього не робить (*).

Як розробник я використовую кілька 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/. Мабуть, це саме те, що буде запущено нову панель налаштувань - це єдиний виняток, який я знайшов у своєму рішенні: що thingy як і раніше використовуватиме JDK9 (останнє, що я встановив), але жоден інший додаток Java не робить ".
Hugues M.

2
Варто зазначити, що версії java знайдені в / Бібліотека / Java / JavaVirtualMachines, і що вищезазначене відмінне робоче рішення знаходиться в цьому контексті.
Андрій Костка

3
Саме це найкраще і найбільш функціональне рішення цього питання. На жаль, так.
Aerodynamika

3
Я не можу вам подякувати за цю відповідь. Це фіксований запуск програм із запуску ОС.
Karthic Raghupathi

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"
elektromin

3
Дивовижні прості псевдоніми для швидкої комутації.
gbonetti

Використання, alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"а потім введення тексту j10дозволяє перейти до поточної версії Java (у моєму випадку Java 10)
intagli

Я б зробив інструмент cli схожий на nvmперемикання версій Java, але абревіатура jvmвже означає щось інше :)
Енді,

Я отримую цю помилку під час пошуку джерел: /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

Якщо ви не використовуєте рибу, ви можете зробити щось подібне в bash:

#!/bin/bash

jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

Потім для переключення між javas виконайте:

$> 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функції.
Daniel AA Pelsmaeker

32

Це трохи хитро, але спробуйте виконати кроки, описані в Інсталяція Java на OS X 10.9 (Mavericks) . По суті, вам доведеться оновити псевдонім до java.

Крок за кроком:

Після встановлення JDK 1.7 вам потрібно буде зробити це sudo ln -snfдля того, щоб змінити посилання на поточне java. Для цього відкрийте Terminal і видайте команду:

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? чи є якесь місце, в яке я його встановив?
Венкат

куди я експортую JAVA_HOME? і де це буде збережено?
Венкат

1
Я оновив відповідь. Чи знаєте ви встановлену версію SDK? Назва папки має номер версії SDK, тому команди, наведені вище, можуть трохи змінитися.
Тренінг

Я встановив останній, я думаю, це 51.
Венкат

Змінна JAVA_HOMEбуде експортована на поточному сеансі терміналу. Ви можете додати його до нашого, .bashrcякщо хочете. Я адаптую команди до останньої версії.
Потяг

32

Використовувати jenv - простий спосіб.

1.Встановіть jenv

    завиток -с get.jenv.io | баш

2.Config jenv

    cd ~ / .jenv / кандидати /
    mkdir java
    cd java
    mkdir 1.7
    mkdir 1,8

3.Symlink шлях 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 / кандидати / java / 1.8

4.У вас все налаштовано

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

jenv використовуйте java 1.8

встановити за замовчуванням:

jevv за замовчуванням java 1.7


Чисте і приємне рішення.
пінтурік

Замість "jenv use java 1.8", мені довелося використовувати "jenv shell 1.8". "оболонка" також може бути "глобальною" або "локальною", залежно від потреби.
Стів Гельман

1
jenv приємно, коли це працює. Я б рекомендував проти цього, проте, оскільки він не "дійсно" змінює використовувану версію 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 покаже вам порожню сторінку, яку ви можете заповнити.

додати в doc: 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 - IMHO набагато кращий підхід, ніж ручні псевдоніми тощо
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дає вам поточний ява додому. Наприклад:/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що ОС вибере попередню версію.


Найпростіший спосіб (: Спасибі
Satheesh Srinivasan

6

З офіційної сторінки java_home (1) від Apple від Apple :

**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

Спочатку з’ясуйте, де ви зберігаєте змінні середовища -

  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

Я адаптував відповідь від @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)

5

Якщо ви все ще не можете встановити його. за допомогою цієї команди.

експортувати JAVA_HOME =/usr/libexec/java_home -v 1.8

тоді вам доведеться користуватися цим.

експортувати JAVA_HOME =$(/usr/libexec/java_home -v 1.8)

це обов’язково спрацює.


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
Jamie S

3

Якщо ви використовуєте рибу, а ви використовуєте 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щоб зміни вступили в силу.
  • Потім можна переключитися за допомогою визначених команд.

Команди - зверху config

Команди:

  • 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 з’являється в / БІБЛІОТЕКА /
  6. Встановити Eclipse | Встановіть Eclipse IDE для розробників Java
  7. Бум завершено
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.