Были ли у вас проблемы с несколькими версиями Java на вашем компьютере? Вы теряете время на настройку переменных среды? В мире Linux есть элегантное решение, и оно называется jEnv .
Вам необходимо поддерживать свои Java-программы, написанные на Java 8 или даже ниже. Разрабатывайте приложения с Java 11 и все равно попробуйте Java 12 или 13. Конечно, у вас будут проблемы.
Предполагая, что у вас уже есть среда разработки с Java 8 и Maven. В примерах я буду использовать Linux Mint. Часто возникают проблемы, когда у нас более одной версии Java на одном компьютере. Чтобы решить эту проблему, мы в конечном итоге выполняем несколько сценариев для изменения JAVA_HOME, используя платформу альтернатив, и нам часто приходится перезапускать сеанс пользователя, чтобы изменения вступили в силу.
Идея состоит в том, чтобы сохранить текущую версию вашей Java, установить JDK 11 и запустить ту или иную версию в соответствии с потребностями проекта. Мы увидим, как легко это сделать с помощью некоторых инструментов. Когда я ссылаюсь на Java 11, JDK или OpenJDK, я всегда буду ссылаться на OpenJDK 11.
Скачать OpenJDK:
$ wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz $ sudo tar xvf openjdk-11.0.1_linux-x64_bin.tar.gz --directory /usr/lib/jvm/
После этого, если вы выполните команду java -версия
вы увидите, что ничего не изменилось, и мы продолжим работу с Java 8:
$ java -version 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)
Maven все еще существует с текущей Java:
$ mvn -version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T15:33:14-03:00) Maven home: /opt/maven Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-8-oracle/jre
Чтобы проверить, все ли в порядке с Java 11, просто выполните команду:
$ /usr/lib/jvm/jdk-11.0.1/bin/java -version openjdk version "11.0.1" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.1+13) OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
Готов! У нас есть обе версии Java на одной машине, и что теперь?
Предполагая, что большинство наших проектов будут работать с Java 8 в течение некоторого времени, давайте определим эту версию как “глобальную”, а Java 11 – как “локальную” версию.
JENV – это инструмент командной строки, который поможет вам забыть, как установить переменную среды JAVA_HOME. Это инструмент, который позволяет настраивать версии Java глобальным или локальным способом. Предполагая, что у нас уже установлена и настроена Java 8, например, с помощью maven.
Этот инструмент доступен только для Linux и Mac. Для установки в Linux выполните следующие действия (при условии, что у вас установлен git).:
$ git clone https://github.com/gcuisinier/jenv.git ~/.jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Если вы используете Zsh:
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc $ echo 'eval "$(jenv init -)"' >> ~/.zshrc
Закройте терминал и откройте его снова. Выполните команду env
Если все в порядке, вы должны увидеть сообщение jenv
+ версия
. Пример: jenv 0.5.1-5-gaf89d78
Если это не сработает, выполните шаг 2 для bashrc вместо bash_profile
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(jenv init -)"' >> ~/.bashrc
Добавление версий Java в jEnv:
Java 8:
$ jenv add /usr/lib/jvm/java-8-oracle
Java 11:
$ jenv add /usr/lib/jvm/jdk-11.0.1
Проверка версий java:
$ jenv versions system 11.0 11.0.1 (set by /home/sandro/.jenv/version) 1.8 1.8.0.191
Бегущий
Предполагая, что вам нужно сохранить Java 8 по умолчанию для устаревших приложений и использовать Java 11 в определенных проектах или каталогах.
Определение глобальной версии:
$ jenv global 1.8.0.191
Определение локальной версии (для каждого каталога):
$ jenv local 11.0.1
Вывод
Мы устанавливаем Java 11 без ущерба для среды, которая уже работает с Java 8. Мы устанавливаем и настраиваем инструмент jEnv, создаем и компилируем проект Java 11. В следующем посте мы проанализируем приложение Java 8 и посмотрим, сможем ли мы запустить его на Java 11.
Если у вас есть какие-либо вопросы или проблемы, оставьте комментарий. Спасибо за чтение.
Рекомендации
Рекомендации
Оригинал: “https://dev.to/sandrogiacom/multiple-jdks-no-problem-1knc”