Как установить OpenJDK Java 11 на Mac OSX, позволяя переключение версий?
Я хочу установить OpenJDK Java 11 на Mac OSX и работать вместе с другими JDK, так как это более новая версия. В настоящее время я загрузил tar.gz и поместил его на моем пути, но это трудно поддерживать.
единственные другие установки, которые я обнаружил, что делают больше вещей автоматически, - это установка Oracle через Homebrew cask, но это коммерческий JDK, и я хочу с открытым исходным кодом!
brew cask info java
показывает:
java: 11,28:55eed80b163941c8885ad9298e6d786a https://www.oracle.com/technetwork/java/javase/overview/index.html
который является Oracle JDK, а не OpenJDK, см.: https://discourse.brew.sh/t/how-to-install-openjdk-with-brew/712
следуя указаниям из более старого вопроса (Mac OS X и несколько версий Java) устарел и дает мне неправильную версию -- Oracle не Пакеты OpenJDK.
Примечание: этот вопрос намеренно написан и на него отвечает автор (Самостоятельно Ответил На Вопросы), так что идиоматические ответы на часто задаваемые темы присутствуют в так.
3 ответов
Примечание: эти решения работают для вашего конкретного случая Java 11 OpenJDK, но также работают для любой другой предыдущей версии Java, охватываемой перечисленными менеджерами версий. Это включает в себя альтернативные JDK от OpenJDK, Oracle, IBM, Azul, Graal и многое другое. Легко работать с Java 7, Java 8, Java 9, Java 10 и теперь 11.
у вас есть несколько вариантов, как сделать установка, а также управлять переключением. Установка может быть сделана Homebew, SDKMAN, Джабба, или ручная установка. Переключение может быть сделано JEnv, SDKMAN или Джабба.
установка
во-первых, установите Java, используя любой метод, который вы предпочитаете, включая Homebrew, SDKMAN или ручную установку tar.файл gz. Преимущества ручной установки заключается в том, что расположение JDK можно разместить в стандартизированном расположении для Mac На OSX.
установить с SDKMAN
это простая модель в том, что она обрабатывает как установку, так и переключение версий, с оговоркой, что она устанавливает JDK в нестандартный каталог.
см. ниже "установка и переключение версий с SDKMAN">
установить с помощью Jabba
это также простая модель в что и установка и переключение версии отрегулированы таким же инструментом. Установка сделаны в нестандартный каталог.
см. ниже "установка и переключение версий с помощью Jabba">
установите вручную со страницы загрузки OpenJDK:
скачать OpenJDK 11 для Mac OSX из http://jdk.java.net/11/
разархивируйте OpenJDK tar и поместите полученный в своем
/Library/Java/JavaVirtualMachines/
папка, так как это стандартное и ожидаемое местоположение С JDK устанавливается. Вы также можете установить в любом месте вы хотите в реальности.
установить с Homebrew
пока недоступно для OpenJDK 11,в ближайшее время! С AdoptOpenJdk>
для других версий Java:
установить Homebrew если вы еще этого не сделали.
-
добавить бочках нажмите:
brew tap homebrew/cask-versions
-
ищите устанавливаемые версии:
brew search java
-
проверьте информацию о версии, которая будет установлена:
brew cask info java
обратите внимание, что текущая версия является коммерческой версией Java 11 Oracle, а не OpenJDK 11.
-
установите определенную версию JDK, такую как
java8
,java10
илиjava
для ток:brew cask install java
и они будут установлены в /Library/Java/JavaVirtualMachines/
который является традиционным местом, ожидаемым на Mac OSX.
другие варианты установки:
вы также можете установить Azul Systems Java Zulu сертифицированные сборки OpenJDK, следуя инструкции на их сайте.
Zulu® - это сертифицированная сборка OpenJDK, полностью совместимая со стандартом Java SE. Zulu является 100% открытым исходным кодом и свободно загружаемым. Теперь разработчики Java, системные администраторы и конечные пользователи могут пользоваться всеми преимуществами Java с открытым исходным кодом с гибкостью развертывания и контролем времени обновления.
где мой JDK?!?!
чтобы найти местоположения ранее установленных Java JDK, установленных в системных местоположениях по умолчанию, используйте:
/usr/libexec/java_home -V
это полезно при использовании таких инструментов, как JEnv, или при добавлении локальной установки для SDKMAN или связывания системного JDK в Jabba -- и вам нужно знать, где их найти.
Если вам нужно найти JDK, установленный другими инструментами, проверьте эти местоположения:
- SDKMAN устанавливается в
~/.sdkman/candidates/java/
- Jabba устанавливается в
~/.jabba/jdk
переключение версий с JEnv
JEnv ожидает, что Java JDK уже существует на машине и может быть в любом местоположение. Обычно вы найдете установленные Java JDK в /Library/Java/JavaVirtualMachines/
. JEnv позволяет установить глобальную версию Java, одну для текущей оболочки и локальную версию для каждого каталога, что удобно, когда некоторые проекты требуют разных версий, чем другие.
установите JEnv если вы еще не сделали, инструкции на сайте http://www.jenv.be/ для ручной установки или использования Homebrew.
-
добавить любую версию Java в JEnv (отрегулируйте каталог, если вы разместили это в другом месте):
jenv add /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
-
установите глобальную версию с помощью этой команды:
jenv global 11
вы также можете добавить другие существующие версии, используя 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 позволяет установить глобальную версию по умолчанию и версию, специфичную для текущей ракушка.
установить SDKMAN из https://sdkman.io/install
-
установите Java 11 с помощью SDKMAN:
sdk install java 11.0.0-open
-
сделать 11 версией по умолчанию:
sdk default java 11.0.0-open
или переключитесь на 11 для сеанса:
sdk use java 11.0.0-open
вы можете перечислить доступные версии для установки с помощью команды list:
sdk list java
и установить дополнительные версии, такие как JDK 8:
sdk install java 8.0.181-oracle
SDKMAN может работать с ранее установленными существующими версиями. Просто сделайте локальную установку, указав свою собственную метку версии и местоположение JDK:
sdk install java my-local-11 /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
и свободно использовать:
sdk use java my-local-11
дополнительная информация доступна в SDKMAN руководство по использованию вместе с другие SDK он может устанавливать и управлять.
SDKMAN будет автоматически управлять вашим PATH
и JAVA_HOME
для вас, как вы меняете версии.
установка и переключение версий с помощью Jabba
Джабба также обрабатывает как установку, так и переключение. Jabba также помещает установленные JDK в свое собственное дерево каталогов, которое обычно ~/.jabba/jdk
.
установите Jabba, следуя инструкция на главной странице.
-
список доступных
jabba ls-remote
-
установить Java JDK 11
jabba install openjdk@1.11.0
-
использовать:
jabba use openjdk@1.11.0
вы также можете псевдонимы имен версий, ссылки на существующие JDK уже установлены, и найти смесь интересных JDK, таких как GraalVM, принять JDK, IBM JDK и многое другое. Полное инструкция по использованию также доступна на домашней странице.
Jabba будет автоматически управлять вашим PATH
и JAVA_HOME
для вас, как вы меняете версии.
Другой альтернативой является использование SDKMAN! Смотри https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/
Сначала установите SDKMAN:https://sdkman.io/install и затем...
- установите Oracle JDK 8 с помощью:
sdk install java 8.0.181-oracle
- установите 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
IMHO, нет необходимости устанавливать все дополнительные приложения / Пакеты.
проверить доступные версии с помощью команды:
> /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 в приведенном выше списке, а не Java SE 8 Oracle, вызовите команду, как показано ниже:
> /usr/libexec/java_home -v 1.8.0_181
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
чтобы выбрать Java SE 8 Oracle, вы должны вызвать команду:
> /usr/libexec/java_home -v 1.8.0_151
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
как вы можете видеть, номер версии должен быть уникальным набором строк: 1.8.0_181 vs 1.8.0_151