Установка Oracle Java на Ubuntu и Centos

16 апреля 2019 года компания Oracle изменила лицензию по распространению Java SE. Теперь JRE от Oracle можно использовать бесплатно только для дома, либо при разработке ПО. Это повлекло за собой различные изменения, такие как отсутствие возможности скачать jvm без регистрации на сайте oracle и закрытие основных репозиториев для установки java из пакетов.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Введение

Мне вынужденно пришлось погрузиться в эту тему, потому что на днях требовалось установить Oracle Java JRE 8 на Ubuntu 18 и у меня никак не получалось это сделать. В сети полно инструкций, простых и понятных, как установить Java на Ubuntu 18, но все они разом стали неактуальны. Популярный репозиторий webupd8team/java перешел в статус DISCONTINUED. Выполнить установку из него больше не получится. Будет вот такая ошибка:

Package oracle-java8-installer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'oracle-java8-installer' has no installation candidate

Package 'oracle-java8-installer' has no installation candidate

Теперь установить Oracle JRE или SDK можно только вручную. Для этого надо:

  1. Зарегистрироваться и авторизоваться на сайте oracle.com.
  2. Скачать бинарники или rpm пакет с сайта.
  3. Скопировать файлы на целевой сервер.
  4. Вручную установить Oracle JRE, прописать path и environment.

Я подробно опишу как это сделать для двух популярных систем - Ubuntu и Centos. Начнем с более сложного, с Ubuntu 18.

Обращаю внимание, что речь идет именно об Oracle Java Runtime Environment (JRE). Некоторые java проекты корректно работают только на ней. Если у проекта есть поддержка OpenJDK, то используйте ее.

Установка Oracle Java на Ubuntu

Как я уже сказал выше, для установки oracle java необходимо скачать бинарники. Причем, сделать это так, как я недавно описывал в статье про настройку ELK Stack не получится. Без авторизации ссылки не доступны. Так что необходимо зарегистрироваться на сайте и скачать бинарники себе на компьютер. Я покажу как это сделать на примере Oracle Java 8. Идем на страницу загрузки, авторизовываемся и скачиваем jre-8u211-linux-x64.tar.gz.

Установка Oracle Java на Ubuntu

Не забудьте отметить флажок напротив Accept License Agreement. После загрузки любым удобным для вас способом скопируйте файл на целевой сервер, куда будем устанавливать Java 8. Я для этого использую scp. Копирую файл в домашнюю директорию /root. Создаем директорию для java и распаковываем туда бинарники.

# mkdir /usr/lib/jvm
# tar -zxf /root/jre-8u211-linux-x64.tar.gz -C /usr/lib/jvm

Java машина должна расположиться в директории /usr/lib/jvm/jre1.8.0_211. Теперь нам необходимо создать символьные ссылки на установленную версию java. Делаем это с помощью update-alternatives.

# update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre1.8.0_211/bin/java" 1500
# update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jre1.8.0_211/bin/javaws" 1500

Зададим переменную JAVA_HOME, которую используют некоторые приложения. Для этого добавляем в файл /etc/environment следующую строку.

JAVA_HOME="/usr/lib/jvm/jre1.8.0_211"

Сохраняем его и применяем изменение.

# source /etc/environment

Теперь проверим, что у нас получилось.

# java -version
# echo $JAVA_HOME

Проверка версии java

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

Если вам необходимо установить Oracle SDK, то делаете все то же самое, только бинарники скачиваете по другой ссылке - Java SE Development Kit.

В принципе, на этом с установкой Oracle Java на Ubuntu все. В общем случае выполнено все необходимое. Но я в процессе компиляции одного приложения столкнулся с одной ошибкой. Расскажу вам, как ее решил.

Could not find tools.jar

Приложение использовало систему автоматической сборки gradle, которая прекращала сборку с ошибкой.

* What went wrong:
Execution failed for task ':compileJava'.
> Could not find tools.jar. Please check that /usr/lib/jvm/jre1.8.0_211 contains a valid JDK installation.

Could not find tools.jar

Я долго гуглил решение. В общем случае оно состоит в том, что нужно тем или иным образом явно указать путь к tools.jar, но у меня этого файла вообще не было в системе и я не знал, где его взять. Я вообще не разбираюсь в теме с явой, первый раз собирал приложение сам. Вышел из положения в итоге следующим образом. Я установил openjdk-8-jdk следующей командой.

# apt install openjdk-8-jdk

Она установилась в директорию /usr/lib/jvm/java-8-openjdk-amd64. Там в директории libs лежал файл tools.jar. Я просто скопировал его в /usr/lib/jvm/jre1.8.0_211/lib, где установлена oracle java. После этого сборка прошла без ошибок.

Уже после написания статьи понял, что мне нужно было установить не Oracle JRE, а JDK, тогда бы все сразу собралось без ошибок. Надеюсь эта информация будет полезна тем, кто будет искать решение похожей проблемы. Она возникла из-за недопонимания различий между JRE и JDK.

Что такое Oracle JRE и JDK и в чем отличие?

Моя первоначальная суета вокруг установки и компиляции Java приложений была связана с тем, что я не обратил внимание на то, что существуют 2 совершенно разных пакета для установки Java.

  • JRE - Java Runtime Environment. Это программный продукт со всем необходимым для запуска скомпилированных java приложений. Пакет включает в себя виртуальную машину ява (JVM), библиотеки, и всю остальную java инфраструктуру. Этот софт стал платным с 16-го апреля.
  • JDK - the Java Development Kit. Это полноценная SDK для разработки приложений на Java. Она включает в себя все, что есть в JRE, плюс компилятор (javac) и различные утилиты. В том числе tools.jar, которых мне не хватало для сборки, описанной выше. JDK уже давно платный, не помню с какого времени.

Подробнее об этих продуктах и об отличиях JRE и SDK можно почитать на официальном сайте в faq. Таким образом, если вам необходимо только запускать уже скомпилированные java приложения, достаточно пакета JRE. Если вам нужно собрать из исходников java программу, ставьте SDK. Я с этим разобрался только в момент написания этой статьи, так что изложение получилось не очень последовательным.

Установка Oracle Java на Centos

Установить Java SE Runtime Environment на CentOS по прежнему не сложно, так как есть готовый rpm пакет. Единственное неудобство, его нужно вручную скачивать с сайта и передавать на сервер. Для скачивания нужно зарегистрироваться на сайте oracle.com. После авторизации, необходимо сходить в раздел загрузки и скачать rpm пакет.

Установка Oracle Java на Centos

После этого передаем его на целевой сервер и устанавливаем Oracle Java на CentOS следующей командой:

# yum localinstall jre-8u211-linux-x64.rpm

После этого можно проверить версию Java в консоли.

# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

Задать переменную $JAVA_HOME можно по аналогии с предыдущем разделом по убунте. Если вам необходимо установить Oracle SDK, то делаете все то же самое, только бинарники скачиваете по другой ссылке - Java SE Development Kit.

На этом установка Oracle Java на Centos закончена.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Перед установкой Oracle Java не забывайте, что теперь ее нельзя просто так использовать в коммерческой среде. Придется платить, если нужна лицензионная чистота. Думаю, что в ближайшее время все проекты постараются отладить свою работу под бесплатным OpenJDK. Число клиентов Oracle JRE явно убавится в разы.

Для меня остается не понятен момент с работой Java на Windows. Она требуется для кучи всевозможных сервисов и оборудования. По идее, теперь за ее использование нужно платить. Как быть со всякими старыми железками, к которым обновлений уже не будет? Что думаете по этому поводу?

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

5 комментариев

  1. Спасибо за материал. Помогло настроить java для Minecraft на Ubuntu 19.04

  2. БЛАГОСЛОВИ ТЕБЯ ГОСПОДЬ!!!!!!!!!!!!!!!!!!!!

  3. Спасибо!! всё просто и понятно даже такому ламеру как я )))

  4. Без регистрации пока что можно скачать с этой страницы https://java.com/ru/download/linux_manual.jsp

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar