Как установить Java на Mac OSX, позволяющую переключать версии? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу установить OpenJDK Java на Mac OSX и заставить его работать вместе с другими JDK, так как это более новая версия.В настоящее время я скачал tar.gz и поместил его в мой путь, но это сложно поддерживать.

Единственная найденная мной инсталляция, которая делает больше автоматически, это инсталляция через бочку Homebrew.Похоже, только текущая версия:

brew cask info java

Показывает:

Java: 12,33https://jdk.java.net/

Так что я могу оттуда установить, но что тогда?Я застрял только с новой версией?

Обновление: По состоянию на 19 марта 2019 года бочка Homebrew теперь указывает на OpenJDK 12

Ответы [ 5 ]

0 голосов
/ 13 ноября 2018

Вот как я это сделал.

Шаг 1: Установка Java 11

Скачать Java 11 dmg для mac можно здесь: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

Шаг 2: После установки Java 11. Подтвердите установку всех версий.Введите следующую команду в своем терминале.

/usr/libexec/java_home -V

Шаг 3: Редактировать .bash_profile

sudo nano ~/.bash_profile

Шаг 4: Добавить 11,0.1 по умолчанию.(Добавьте строку ниже в файл bash_profile).

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

для переключения на любую версию

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

Теперь нажмите CTRL + X для выхода из bash.Нажмите 'Y', чтобы сохранить изменения.

Шаг 5: Обновить bash_profile

source ~/.bash_profile

Шаг 6: Подтвердить текущую версию Java

java -version
0 голосов
/ 28 октября 2018

Ручное переключение версии системы по умолчанию без сторонних инструментов:

Как подробно описано в этот старый ответ , в macOS /usr/bin/java - это инструмент-обертка, который будетиспользуйте версию Java, указанную JAVA_HOME, или, если эта переменная не установлена, будет искать установки Java под /Library/Java/JavaVirtualMachines/ и будет использовать версию с самой высокой версией.Он определяет версии, просматривая Contents/Info.plist под каждым пакетом.

Вооружившись этими знаниями, вы можете:

  • контролировать, какую версию система будет использовать, переименовывая Info.plist в версиях, которые выне хотите использовать по умолчанию (этот файл не используется самой средой выполнения Java).
  • контролирует, какую версию использовать для конкретных задач, установив $JAVA_HOME

Я только что подтвердил, что это все еще верно с OpenJDK & Mojave.

В новой системе не установлена ​​версия Java:

$ java -version
No Java runtime present, requesting install.

Отмените это, загрузите OpenJDK 11 & 12eaна https://jdk.java.net;установить OpenJDK11:

$ cd /Library/Java/JavaVirtualMachines/
$ sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz

Системный Java теперь 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

Установить OpenJDK12 (ранний доступ в данный момент):

$ sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz 

Системный Java сейчас12:

$ java -version
openjdk version "12-ea" 2019-03-19
[...]

Теперь давайте "спрячем" OpenJDK 12 от системной оболочки Java:

$ cd jdk-12.jdk/Contents/
$ sudo mv Info.plist Info.plist.disabled

Системная версия Java вернулась к 11:

$ java -version
openjdk version "11.0.1" 2018-10-16
[...]

И выможно по-прежнему использовать версию 12 пунктуально, вручную установив JAVA_HOME:

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ java -version
openjdk version "12-ea" 2019-03-19
[...]
0 голосов
/ 26 сентября 2018

Другая альтернатива - SDKMAN !См. https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/

Сначала установите SDKMAN: https://sdkman.io/install, а затем ...

  1. Установите Oracle JDK 8 с: sdk install java 8.0.181-oracle
  2. УстановитьOpenJDK 11 с: sdk install java 11.0.0-open

Для переключения:

  • Переключиться на JDK 8 с помощью sdk use java 8.0.181-oracle
  • Переключиться на JDK 11 с помощью sdk use java 11.0.0-open

Чтобы установить значение по умолчанию:

  • По умолчанию JDK 8 с sdk default java 8.0.181-oracle
  • По умолчанию JDK 11 с sdk default java 11.0.0-open
0 голосов
/ 05 октября 2018

ИМХО, Нет необходимости устанавливать все дополнительные приложения / пакеты.

Проверьте доступные версии с помощью команды:

> /usr/libexec/java_home -V
Matching Java Virtual Machines (8):
    11, x86_64: "Java SE 11-ea" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
    10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_181-zulu-8.31.0.1, x86_64:    "Zulu 8"    /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
    1.8.0_151, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

Теперь, если вы хотите выбрать Azul JDK 8 вВ приведенном выше списке, а НЕ в Oracle Java SE 8, вызывайте команду, как показано ниже:

> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

Чтобы выбрать Oracle SE SE 8, вы должны вызвать команду:

> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

Как вы можетесм. предоставленный номер версии должен быть уникальным набором строк: 1.8.0_181 против 1.8.0_151

0 голосов
/ 26 сентября 2018

примечание: Эти решения работают для различных версий Java, включая Java 11 и новую Java 12, и для любой другой предыдущей версии Java, охватываемой перечисленными менеджерами версий.Это включает в себя альтернативные JDK от OpenJDK, Oracle, IBM, Azul, Amazon Correto, Graal и других.Простая работа с Java 7, Java 8, Java 9, Java 10, Java 11, Java 12 и даже ранний доступ к Java 13!

У вас также есть несколько вариантов установки.Как управлять переключением JDK.Установка может быть выполнена Homebrew, SDKMAN , Jabba или ручной установкой.Переключение может быть выполнено с помощью JEnv , SDKMAN , Jabba или вручную, установив JAVA_HOME.Все они описаны ниже.

Установка

Сначала установите Java, используя любой метод, который вы предпочитаете, включая Homebrew, SDKMAN или ручную установку файла tar.gz.Преимущества ручной установки заключаются в том, что расположение JDK можно разместить в стандартизированном месте для Mac OSX.

Установка с использованием SDKMAN

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

<<em> см. ниже «Установка и переключение версий с помощью SDKMAN» >

Установитьиспользование Jabba

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

<<em> см. Ниже «Установка и переключение версий с помощью Jabba» >

Установка вручную со страницы загрузки OpenJDK:

  1. Загрузите OpenJDK для Mac OSX из http://jdk.java.net/

  2. Разархивируйте архив OpenJDK и поместите полученную папку (т.е. jdk-12.jdk) в папку /Library/Java/JavaVirtualMachines/так как это стандартное и ожидаемое место установки JDK.Вы также можете установить в любом месте на самом деле.

Установка с Homebrew

Версия Java, доступная в Homebrew Cask до 3 октября 2018 года, действительно была Oracle JVM,Однако теперь он был обновлен до OpenJDK.Обязательно обновите Homebrew, и тогда вы увидите последнюю версию, доступную для установки.

  1. установите Homebrew , если вы этого еще не сделали.Убедитесь, что оно обновлено:

    brew update
    
  2. Добавьте кран бочек, если вы этого еще не сделали (или вы больше не видите старые версии Java с шагом № 3):

    brew tap homebrew/cask-versions
    

    и для версий AdoptOpenJDK добавьте этот кран:

    brew tap adoptopenjdk/openjdk
    

    Эти бочки часто меняют свои версии Java, и могут быть другие касания с дополнительнымиВерсии Java.

  3. Найдите устанавливаемые версии:

    brew search java   
    

    или для версий AdoptOpenJDK:

    brew search jdk     
    
  4. Проверьте подробности наверсия, которая будет установлена:

    brew cask info java
    

    или для версии AdoptOpenJDK:

    brew cask info adoptopenjdk
    
  5. Установите определенную версию JDK, например java11,adoptopenjdk8, или просто java или adoptopenjdk для текущего.Например:

    brew cask install java
    

    Вы также можете использовать полный путь к более старым версиям:

    brew cask install homebrew/cask-versions/java11
    

И они будут установлены в /Library/Java/JavaVirtualMachines/, которыйэто традиционное расположение, ожидаемое в Mac OSX.

Другие варианты установки:

Некоторые другие разновидности openJDK:

Azul Systems JavaZulu сертифицированные сборки OpenJDK можно установить, следуя инструкциям на их сайте .

Zulu® - это сертифицированная сборка OpenJDK, полностью совместимая с Java SEстандарт.Zulu является 100% открытым исходным кодом и свободно загружается.Теперь разработчики Java, системные администраторы и конечные пользователи могут пользоваться всеми преимуществами Java с открытым исходным кодом, гибкостью развертывания и контролем времени обновления.

Amazon Correto Сборки OpenJDK имеют простой в использовании установочный пакет для версии 8 или версии 11 (появятся другие версии) и устанавливаются в стандартный каталог /Library/Java/JavaVirtualMachines/ на Mac OSX..

Amazon Corretto - это бесплатный, многоплатформенный, готовый к работе дистрибутив Open Java Development Kit (OpenJDK).Corretto поставляется с долгосрочной поддержкой, которая будет включать улучшения производительности и исправления безопасности.Amazon запускает Corretto на своих внутренних производственных площадках, и Corretto сертифицирована как совместимая со стандартом Java SE.С Corretto вы можете разрабатывать и запускать приложения Java на популярных операционных системах, включая Linux, Windows и macOS.

Где находится мой JDK?!?!

Чтобы найти расположения ранее установленных Java JDK, установленных в расположениях системы по умолчанию, используйте:

/usr/libexec/java_home -V

Соответствие виртуальных машин Java(5):12, x86_64: «OpenJDK 12» /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home11, x86_64: «Java SE 11» /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home10.0.2, x86_64: «Java SE 10.0.2» /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home9, x86_64: «Java SE 9» /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home1.8.0_144, x86_64: «Java SE 8» /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

Вы также можете сообщить только местоположение определенной версии Java, используя -v.Например для Java 12:

/usr/libexec/java_home -v 12

/ Библиотека / Java / JavaVirtualMachines / jdk-12.jdk / Contents / Home

Знание расположения установленных JDKтакже полезно при использовании таких инструментов, как JEnv, или при добавлении локальной установки в SDKMAN, или при связывании системного JDK в Jabba - и вам нужно знать, где их найти.

Если вам нужно найти JDK, установленныйдругие инструменты, проверьте эти места:

  • SDKMAN устанавливает на ~/.sdkman/candidates/java/
  • Jabba устанавливает на ~/.jabba/jdk

Переключение версий вручную

Исполняемый файл Java - это оболочка, которая будет использовать все, что настроено в JDK в JAVA_HOME, так что вы можете изменить это, чтобы также изменить используемый JDK.

Например, если вы установили JDK от 12 до /Library/Java/JavaVirtualMachines/jdk-12.jdk или установили Untar'd, если это наибольший номер версии, это уже должно быть значением по умолчанию, в противном случае вы можете просто установить:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

И теперь, независимо от того, какой исполняемый файл Java находится в пути, он увидит это и будет использовать правильный JDK.

Использование утилиты /usr/libexec/java_home, как описано выше, помогает вам создавать псевдонимы или запускать команды для изменения версий Java, идентифицируяместа различных установок JDK.Например, создание псевдонимов оболочки в вашем .profile или .bash_profile для изменения JAVA_HOME для вас:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'

# default to Java 12
java12

Затем, чтобы изменить версии, просто используйте псевдоним.

java8
java -version

Java-версия "1.8.0_144"

Конечно, настройка JAVA_HOME работает и вручную!

Переключение версий с помощью JEnv

JEnv предполагает, что Java JDK уже существует на компьютере и может находиться в любом месте.Обычно вы найдете установленные Java JDK в /Library/Java/JavaVirtualMachines/.JEnv позволяет установить глобальную версию Java, одну для текущей оболочки и локальную версию для каждого каталога, что удобно, когда некоторые проекты требуют версий, отличных от других.

  1. Установите JEnv, если выеще нет, инструкции на сайте http://www.jenv.be/ для ручной установки или использования Homebrew.

  2. Добавить любую версию Java в JEnv ( настроить каталог, если вы разместилиэто в другом месте ):

    jenv add /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
    
  3. Установите глобальную версию с помощью этой команды:

    jenv global 12
    

Вы также можете добавить другиесуществующих версий, использующих jenv add аналогичным образом, и перечислите те, которые доступны.Например Java 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

См. JEnv docs для получения дополнительных команд.Теперь вы можете переключаться между любыми версиями Java (Oracle, OpenJDK и т. Д.) В любое время для всей системы, для оболочек или для локального каталога.

Чтобы помочь управлять JAVA_HOME при использовании JEnv, вы можете добавить экспортный плагин , который сделает это за вас.

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

Плагин экспорта может не корректировать JAVA_HOME, если он уже установлен, поэтому вам может потребоваться очистить эту переменную в своем профиле, чтобы она могла управляться JEnv.

Вы также можете использовать jenv exec <command> <parms...> для запуска отдельных команд с JAVA_HOME и PATH, установленными правильно для этой одной команды, что может включать открытие другой оболочки.

Установка и переключение версий с SDKMAN

SDKMAN немного отличается и обрабатывает как установку, так и переключение.SDKMAN также помещает установленные JDK в свое собственное дерево каталогов, которое обычно ~/.sdkman/candidates/java.SDKMAN позволяет установить глобальную версию по умолчанию и версию, специфичную для текущей оболочки.

  1. Установить SDKMAN из https://sdkman.io/install

  2. Установить Java 12 с помощью SDKMAN:

    sdk install java 12.0.0-open 
    
  3. Сделать 12 версией по умолчанию:

    sdk default java 12.0.0-open
    

    Или переключиться на 12 для сеанса:

    sdk use java 12.0.0-open
    

Вы можете получить список доступных версий для установки, используя команду list:

sdk list java

И установить дополнительные версии, такие как JDK 8:

sdk install java 8.0.181-oracle

SDKMAN может работать с ранее установленными существующимиверсии.Просто выполните локальную установку с указанием собственной метки версии и расположения JDK:

sdk install java my-local-12 /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

и используйте ее свободно:

sdk use java my-local-12

Более подробная информация доступна в SDKMANРуководство по использованию вместе с другими SDK , которые он может устанавливать и управлять.

SDKMAN будет автоматически управлять вашими PATH и JAVA_HOME для вас при изменении версии.

Установка и переключение версий с Jabba

Jabba также выполняет как установку, так и переключение.Jabba также помещает установленные JDK в свое собственное дерево каталогов, которое обычно ~/.jabba/jdk.

  1. Установите Jabba, следуя инструкциям на домашней странице .

  2. Список доступных JDK

    jabba ls-remote
    
  3. Установить Java JDK 12

    jabba install openjdk@1.12.0
    
  4. Использовать его:

    jabba use openjdk@1.12.0
    

Вы также можете использовать псевдонимназвания версий, ссылки на уже установленные JDK и поиск сочетания интересных JDK, таких как GraalVM, Adopt JDK, IBM JDK и других.Полное руководство по использованию также доступно на домашней странице.

Jabba будет автоматически управлять вашими PATH и JAVA_HOME для вас при изменении версии.

...