1. Вступление
В 2017 году Oracle объявила о выпуске Java (тогда еще новой) за шесть месяцев. Это было значительным изменением по сравнению с предыдущим циклом Java, состоящим из одного крупного выпуска каждые два-три года. С появлением новых выпусков Java предоставляет разработчикам больше инноваций и делает платформу еще более привлекательной. Это также означает, что управлять различными версиями сложнее, если вы хотите идти в ногу с новыми функциями или если для разных проектов требуются разные версии. В этом сообщении в блоге мы увидим, как управлять несколькими версиями Java в Linux
с помощью jEnv .
2. Что такое jEnv?
jEnv – это инструмент командной строки, который помогает управлять несколькими установками Java. Таким образом, разработчики могут надеяться забыть, как установить переменную среды JAVA_HOME. С помощью jEnv вы можете настроить локальные установки Java на глобальных
, каталог
и даже уровень оболочки
. Это возможно, потому что jEnv хранит локальную версию Java в файле .java-версия
и, в зависимости от контекста, просто перенаправит на соответствующий установочный файл.
3. Установка
Мы начнем с установки некоторых версий JDK, чтобы у нас были версии для управления. Нам также понадобится Git чтобы иметь возможность установить jEnv.
Установить Java SE 8
и Java SE 11
$ sudo apt install openjdk-8-jdk && sudo apt install openjdk-11-jdk
Установить Git
$ sudo apt install git
Для установки jEnv
мы начинаем с клонирования его репозитория git
$ 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 $ source .bash_profile
Если вышеприведенные команды не работают для вас, не волнуйтесь, просто используйте .bashrc
вместо
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(jenv init -)"' >> ~/.bashrc $ source .bashrc
Первая команда выше добавляет jEnv в ваш ПУТЬ чтобы можно было найти его двоичные файлы. Второй просто инициализирует jEnv после загрузки вашей оболочки, а
source
– это встроенная команда оболочки bash, которая выполняет содержимое файла.
4. Использование
Если вы запустите jenv
, вы должны получить следующее
$ jenv jenv 0.5.2-28-g3f3e517 Usage: jenv[ ] Some useful jenv commands are: commands List all available jenv commands local Set or show the local application-specific Java version global Set or show the global Java version shell Set or show the shell-specific Java version rehash Rehash jenv shims (run this after installing executables) version Show the current Java version and its origin versions List all Java versions available to jenv which Display the full path to an executable whence List all Java versions that contain the given executable add Add JDK into jenv. A alias name will be generated by parsing "java -version" See `jenv help ' for information on a specific command. For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md
Теперь давайте добавим различные версии JDK, которые мы установили, в наш инструмент командной строки
$ jenv add /usr/lib/jvm/java-1.8.0-openjdk-amd64 $ jenv add /usr/lib/jvm/java-11-openjdk-amd64
Чтобы узнать, какими версиями может управлять наш инструмент, выполнять
$ jenv versions system 11 11.0 11.0.4 *1.8 (set by /home/nkengasong/.jenv/version) 1.8.0.222 openjdk64-11.0.4 openjdk64-1.8.0.222
Надеюсь, вы сможете увидеть что-то похожее на. Также обратите внимание на разные 11 и 1.8.0, это просто псевдонимы, относящиеся к одной и той же версии, так что на самом деле у вас две управляемые версии.
Теперь вы можете указать, какую версию вы хотите использовать. Например, если вы хотите использовать Java 11 глобально, используйте следующую команду
$ jenv global 11
Вы можете работать над проектом JDK 8, не меняя свою глобальную версию.
$ mkdir my-jdk-8-project $ cd my-jdk-8-project $ jenv local 1.8
Если вы проверите версию Java в своем каталоге my-jdk-8-project
, вы получите следующее
$ java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
Наконец, мы должны установить $JAVA_HOME
, потому что JENV, к сожалению, не сделает этого за нас. Это очень важно, учитывая, что несколько инструментов, таких как IDE, зависят от этой переменной. Для этого мы включаем плагин экспорт следующим образом
$ jenv enable-plugin export
Теперь мы можем убедиться, что для переменной $JAVA_HOME
установлена глобальная версия Java
$ echo $JAVA_HOME /home/nkengasong/.jenv/versions/1.8
Вы также можете включить другие плагины, такие как maven и оценить плагины
$ jenv enable-plugin maven $ jenv enable-plugin gradle
5. Вывод
В этом сообщении в блоге мы рассмотрели, как управлять несколькими версиями Java в Linux с помощью инструмента командной строки java, который поможет вам забыть, как установить переменную среды JAVA_HOME.
Оригинал: “https://dev.to/nkengasong_atem/manage-multiple-java-versions-on-linux-nfc”