Я хочу установить OpenJDK Java на Mac OSX и заставить его работать вместе с другими JDK, так как это более новая версия. В настоящее время я скачал tar.gz и поместил его в мой путь, но это сложно поддерживать.
Единственная другая установка, которую я обнаружил, которая делает больше вещей автоматически, - это установка через бочку Homebrew. Похоже, только текущая версия:
brew cask info java
шоу:
Java: 13,33: 5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/
Так что я могу установить его оттуда, но что тогда? Я застрял только с новой версией?
Ответы:
примечание: эти решения работают для различных версий Java, включая Java 8 и новую Java 13, и для любой другой предыдущей версии 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 в нестандартный каталог.
< см. ниже «Установка и переключение версий с помощью SDKMAN» >
Установить с помощью Jabba
Это также простая модель, поскольку установка и переключение версий выполняются одним и тем же инструментом. Установки сделаны в нестандартный каталог.
< см. ниже «Установка и переключение версий с помощью Jabba» >
Установите вручную со страницы загрузки OpenJDK:
Загрузите OpenJDK для Mac OSX с http://jdk.java.net/ (например, Java 13 )
Разархивируйте tar-архив OpenJDK и поместите полученную папку (т. Е.
jdk-13.jdk
) В вашу/Library/Java/JavaVirtualMachines/
папку, так как это стандартное и ожидаемое место установки JDK. Вы также можете установить в любом месте в реальности.Установить с Homebrew
Версия Java, доступная в Homebrew Cask до 3 октября 2018 года, действительно была Oracle JVM. Однако теперь он был обновлен до OpenJDK. Обязательно обновите Homebrew, и тогда вы увидите последнюю версию, доступную для установки.
установите Homebrew, если вы еще этого не сделали. Убедитесь, что оно обновлено:
Добавьте каску бочек, если вы еще этого не сделали (или вы больше не видите старые версии Java на шаге 3):
и для версий AdoptOpenJDK добавьте этот кран:
Эти бочки часто меняют свои версии Java, и могут быть другие ответвления с дополнительными версиями Java.
Ищите устанавливаемые версии:
или для версий AdoptOpenJDK:
Проверьте информацию о версии, которая будет установлена:
или для версии AdoptOpenJDK:
Установить конкретную версию JDK , таких как
java11
,adoptopenjdk8
или простоjava
илиadoptopenjdk
для тока. Например:Вы также можете использовать полный путь к старым версиям:
И они будут установлены в
/Library/Java/JavaVirtualMachines/
традиционном месте, ожидаемом на Mac OSX.Другие варианты установки:
Некоторые другие разновидности openJDK:
Azul Systems Java Zulu сертифицированные сборки OpenJDK можно установить, следуя инструкциям на их сайте .
Сборки Amazon Correto OpenJDK имеют простой в использовании установочный пакет для версии 8 или версии 11 (появятся другие версии) и устанавливаются в стандартный
/Library/Java/JavaVirtualMachines/
каталог на Mac OSX.Где мой JDK?!?!
Чтобы найти расположения ранее установленных Java JDK, установленных в расположениях системы по умолчанию, используйте:
Вы также можете сообщить только местоположение конкретной версии Java, используя
-v
. Например для Java 13:Знание расположения установленных JDK также полезно при использовании таких инструментов, как JEnv, или при добавлении локальной установки в SDKMAN, или при связывании системного JDK в Jabba - и вам необходимо знать, где их найти.
Если вам нужно найти JDK, установленный другими инструментами, проверьте эти места:
~/.sdkman/candidates/java/
~/.jabba/jdk
Переключение версий вручную
Исполняемый файл Java - это оболочка, которая будет использовать все, что настроено в JDK
JAVA_HOME
, так что вы можете изменить это, чтобы также изменить используемый JDK.Например, если вы установили или удалили JDK 13, чтобы,
/Library/Java/JavaVirtualMachines/jdk-13.jdk
если это самый большой номер версии, он уже был по умолчанию, если нет, вы можете просто установить:И теперь, где бы ни находился исполняемый файл Java, он увидит это и будет использовать правильный JDK.
Использование
/usr/libexec/java_home
утилиты, как описано выше, помогает создавать псевдонимы или запускать команды для изменения версий Java путем определения местоположений различных установок JDK. Например, создание псевдонимов оболочки в вашем.profile
или.bash_profile
изменитьJAVA_HOME
для вас:Затем, чтобы изменить версию, просто используйте псевдоним.
Конечно, настройка
JAVA_HOME
вручную тоже работает!Переключение версий с JEnv
JEnv ожидает, что Java JDK уже существует на компьютере и может находиться в любом месте. Обычно вы найдете установленные Java JDK в
/Library/Java/JavaVirtualMachines/
. JEnv позволяет установить глобальную версию Java, одну для текущей оболочки и локальную версию для каждого каталога, что удобно, когда некоторые проекты требуют версий, отличных от других.Установите JEnv, если вы этого еще не сделали, инструкции на сайте http://www.jenv.be/ для ручной установки или использования Homebrew.
Добавьте любую версию Java в JEnv ( настройте каталог, если вы разместили это в другом месте ):
Установите глобальную версию с помощью этой команды:
Вы также можете добавить другие существующие версии, используя
jenv add
аналогичным образом, и перечислить те, которые доступны. Например Java 8:Посмотрите документы JEnv для большего количества команд. Теперь вы можете переключаться между любыми версиями Java (Oracle, OpenJDK и т. Д.) В любое время для всей системы, для оболочек или для локального каталога.
Чтобы облегчить управление
JAVA_HOME
при использовании JEnv, вы можете добавить плагин экспорта, который сделает это за вас.Плагин экспорта может не корректироваться,
JAVA_HOME
если он уже установлен, поэтому вам может потребоваться очистить эту переменную в своем профиле, чтобы ею можно было управлять с помощью JEnv.Вы также можете использовать
jenv exec <command> <parms...>
для запуска отдельных командJAVA_HOME
иPATH
правильно установить для этой команды, что может включать в себя открытие другой оболочки.Установка и переключение версий с помощью SDKMAN
SDKMAN немного отличается и обрабатывает как установку, так и переключение. SDKMAN также помещает установленные JDK в свое собственное дерево каталогов, которое обычно
~/.sdkman/candidates/java
. SDKMAN позволяет установить глобальную версию по умолчанию и версию, специфичную для текущей оболочки.Установите SDKMAN по адресу https://sdkman.io/install
Перечислите доступные версии Java, чтобы убедиться, что вы знаете идентификатор версии
Установите одну из этих версий, например, Java 13:
Сделайте 13 версией по умолчанию:
Или переключитесь на 13 для сеанса:
Когда вы перечислите доступные версии для установки с помощью команды list, вы увидите большое разнообразие дистрибутивов Java:
И установите дополнительные версии, такие как JDK 8:
SDKMAN может работать с ранее установленными существующими версиями. Просто выполните локальную установку, указав собственную метку версии и местоположение JDK:
И используйте это свободно:
Дополнительная информация доступна в Руководстве по использованию SDKMAN вместе с другими SDK, которые можно установить и управлять ими.
SDKMAN будет автоматически управлять вашим
PATH
иJAVA_HOME
для вас при смене версий.Установка и переключение версий с Jabba
Jabba также выполняет как установку, так и переключение. Jabba также помещает установленные JDK в свое собственное дерево каталогов, которое обычно
~/.jabba/jdk
.Установите Jabba, следуя инструкциям на домашней странице .
Список доступных JDK
Установите Java JDK 12
Используй это:
Вы также можете использовать псевдонимы версий, связываться с уже установленными JDK и найти сочетание интересных JDK, таких как GraalVM, Adopt JDK, IBM JDK и других. Полное руководство по использованию также доступно на домашней странице.
Jabba будет автоматически управлять вашим
PATH
иJAVA_HOME
для вас при изменении версии.источник
JAVA_HOME
для того, чтобы выбрать конкретную версию, что-то вродеexport JAVA_HOME=$(/usr/libexec/java_home -v <version>)
в вашем.bash_profile
JAVA_HOME
устанавливать вручную и сами управляют им. JEnv наверняка не отрегулирует его, если он был установлен ранее, не уверен насчет Jabba и SDKMAN, но они обычно будут управлять этим параметром. Только ручная установка без переключения версий никогда не должна устанавливать это значение напрямую.Вот как я это сделал.
Шаг 1: Установите Java 11
Вы можете скачать Java 11 DMG для Mac здесь: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
Шаг 2: После установки Java 11. Подтвердите установку всех версий. Введите следующую команду в своем терминале.
Шаг 3: Редактировать .bash_profile
Шаг 4: Добавьте 11.0.1 по умолчанию. (Добавьте строку ниже в файл bash_profile).
переключиться на любую версию
Теперь нажмите CTRL + X, чтобы выйти из bash. Нажмите «Y», чтобы сохранить изменения.
Шаг 5: Перезагрузите bash_profile
Шаг 6: Подтвердите текущую версию Java
источник
Ручное переключение версии системы по умолчанию без сторонних инструментов:
Как подробно описано в этом более раннем ответе , в macOS
/usr/bin/java
это инструмент-обертка, который будет использовать версию Java, на которую указывает указатель,JAVA_HOME
или, если эта переменная не установлена, будет искать установки Java/Library/Java/JavaVirtualMachines/
и использовать версию с самой высокой версией. Он определяет версии, глядя наContents/Info.plist
каждый пакет.Вооружившись этими знаниями, вы можете:
Info.plist
в версии, которые вы не хотите использовать по умолчанию (этот файл не используется самой средой выполнения Java).$JAVA_HOME
Я только что подтвердил, что это все еще верно с OpenJDK & Mojave.
На новой системе не установлена версия Java:
Отмените это, загрузите OpenJDK 11 & 12ea на https://jdk.java.net ; установить OpenJDK11:
Система Java теперь 11:
Установите OpenJDK12 (ранний доступ в данный момент):
Система Java теперь 12:
Теперь давайте «спрячем» OpenJDK 12 от системной оболочки Java:
Система Java вернулась к 11:
И вы все еще можете использовать версию 12 пунктуально, установив вручную
JAVA_HOME
:источник
Если на вашем компьютере установлено несколько версий, добавьте следующее в профиль bash:
И добавьте следующие псевдонимы:
И можете переключиться на нужную версию, используя псевдоним:
В терминале:
~ >> java7 export JAVA_HOME=$JAVA_7_HOME
источник
Другая альтернатива - использование SDKMAN ! См. Https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/
Сначала установите SDKMAN: https://sdkman.io/install, а затем ...
sdk install java 8.0.181-oracle
sdk install java 11.0.0-open
Переключить:
sdk use java 8.0.181-oracle
sdk use java 11.0.0-open
Чтобы установить значение по умолчанию:
sdk default java 8.0.181-oracle
sdk default java 11.0.0-open
источник
С Homebrew и Jenv:
Предположение: Mac машина и вы уже установили доморощенный.
Установить бочку:
Чтобы установить последнюю версию Java:
Чтобы установить Java 8:
Чтобы установить Java 9:
Если вы хотите установить / управлять несколькими версиями, вы можете использовать 'jenv':
Установите и настройте jenv:
Добавьте установленную Java в jenv:
Чтобы увидеть все установленные Java:
Приведенная выше команда выдаст список установленных java:
Настройте версию Java, которую вы хотите использовать:
источник
Error: caskroom/cask was moved. Tap homebrew/cask-cask instead
тогдаfatal: repository 'https://github.com/Homebrew/homebrew-cask-cask/' not found
ИМХО, нет необходимости устанавливать все дополнительные приложения / пакеты.
Проверьте доступные версии с помощью команды:
Теперь, если вы хотите выбрать Azul JDK 8 в приведенном выше списке, а НЕ Oracle Java SE 8, выполните команду, как показано ниже:
Чтобы выбрать Oracle SE SE 8, вы должны вызвать команду:
Как видите, номер версии должен быть уникальным набором строк: 1.8.0_181 против 1.8.0_151
источник
1.8.0_181-zulu-8.31.0.1
? или это частичное совпадение?JAVA_HOME
. Ручное переключение с помощью этих команд описано в моем другом ответе.