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
Теперь установить Oracle JRE или SDK можно только вручную. Для этого надо:
- Зарегистрироваться и авторизоваться на сайте oracle.com.
- Скачать бинарники или rpm пакет с сайта.
- Скопировать файлы на целевой сервер.
- Вручную установить Oracle JRE, прописать path и environment.
Я подробно опишу как это сделать для двух популярных систем - Ubuntu и Centos. Начнем с более сложного, с Ubuntu 18.
Установка Oracle Java на Ubuntu
Как я уже сказал выше, для установки oracle java необходимо скачать бинарники. Причем, сделать это так, как я недавно описывал в статье про настройку ELK Stack не получится. Без авторизации ссылки не доступны. Так что необходимо зарегистрироваться на сайте и скачать бинарники себе на компьютер. Я покажу как это сделать на примере Oracle Java 8. Идем на страницу загрузки, авторизовываемся и скачиваем jre-8u211-linux-x64.tar.gz.
Не забудьте отметить флажок напротив 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.
Если вам необходимо установить 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.
Я долго гуглил решение. В общем случае оно состоит в том, что нужно тем или иным образом явно указать путь к 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 следующей командой:
# 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. Она требуется для кучи всевозможных сервисов и оборудования. По идее, теперь за ее использование нужно платить. Как быть со всякими старыми железками, к которым обновлений уже не будет? Что думаете по этому поводу?
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Спасибо за материал. Помогло настроить java для Minecraft на Ubuntu 19.04
БЛАГОСЛОВИ ТЕБЯ ГОСПОДЬ!!!!!!!!!!!!!!!!!!!!
Спасибо!! всё просто и понятно даже такому ламеру как я )))
Есть же https://aws.amazon.com/ru/corretto/
Без регистрации пока что можно скачать с этой страницы https://java.com/ru/download/linux_manual.jsp