Java 21 на Raspberry Pi 5

Вопрос или проблема

Я не могу установить Java 21 на Raspberry Pi 5. Я скачал ARM-версии с openJDK и Oracle, но обе не работают для меня.

При вводе ./java выводится: “Нет такого файла или каталога” (Я уверен, что нахожусь в правильном каталоге)

Я не могу найти ни одного репозитория, который я мог бы использовать для установки Java 21, и мне нужна более новая версия Java, чем 17, для моих проектов, написанных на Java 21.

Вывод файла ./java

./java: ELF 64-битный исполняемый файл pie, ARM aarch64, версия 1 (SYSV),
динамически связанный, интерпретатор /lib/ld-linux-aarch64.so.1, для
GNU/Linux 3.7.0, не уменьшен

Вывод ldd ./java:

java является “не динамическим исполняемым файлом

У вас есть идеи, как я могу установить Java 21 на Raspberry Pi 5?

Как воспроизвести:

  • OpenJDK: С сайта (https://jdk.java.net/21/) я скачал версию для Linux / AArch64, распаковал ее и попытался запустить исполняемый файл java из распакованного каталога bin/java с помощью команды java внутри
    указанного каталога

  • Oracle JDK: Я скачал с сайта (https://www.oracle.com/pl/java/technologies/downloads/) версию для ARM64 в сжатом архиве и сделал точно так же, как с версией OpenJDK.

Дистрибутив является стандартным для Raspberry Pi 5: Raspberry Pi OS 64 бита (основан на Debian)

Вывод для find / -name java -type f -exec ls -l {} ; 2>/dev/null:

bloodlex@raspberrypi:~/Download/jdk-21.0.1/bin $ find / -name java
-type f -exec ls -l {} ; 2>/dev/null
-rwxr-xr-x 1 bloodlex bloodlex 70792 10-05 15:44 /home/bloodlex/Download/jdk-21.0.1/bin/java

Вывод для file /bin/ls:

bloodlex@raspberrypi:~/Download/jdk-21.0.1/bin $ file /bin/ls /bin/ls:
ELF 32-битный исполняемый файл LSB, ARM, EABI5 версия 1 (SYSV), динамически
связанный, интерпретатор /lib/ld-linux-armhf.so.3,
BuildID[sha1]=73a3ba02d9f4bf3632cbebe139c6a844ca5076d3, для GNU/Linux
3.2.0, уменьшен

Вывод для uname -a

bloodlex@raspberrypi:~/Download/jdk-21.0.1/bin $ uname -a Linux
raspberrypi 6.1.0-rpi6-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.58-1+rpt2
(2023-10-27) aarch64 GNU/Linux

Я решил стереть SD-карту от Raspberry (ту, которую я получил в комплекте с устройством) и скачал новый официальный образ Raspberry Pi 5 64 бита. Теперь Java работает, как и ожидалось, с ARM 64-битной версией без каких-либо проблем. Похоже, что теперь и пространство пользовательских приложений 64 бита, как и должно быть.

Таким образом, решение в моем случае состоит в том, чтобы не использовать операционную систему по умолчанию, которую вы можете найти на SD-карте, поставляемой с вашим Raspberry Pi 5. Я рекомендую скачать официальный инструмент и операционную систему и сделать это самостоятельно.

Я столкнулся с той же проблемой. OpenJDK 21 (и выше) не поддерживаются Oracle в долгосрочной перспективе, поэтому многие дистрибутивы (включая Raspbian) переходят на eclipse temurin (https://adoptium.net/de/temurin/releases/). Поэтому просто выполните sudo apt install temurin-21-jdk, и затем java -version (и т.д.) будет работать.

Ответ или решение

Установка Java 21 на Raspberry Pi 5: Решение распространенной проблемы

Вы столкнулись с проблемой установки Java 21 на Raspberry Pi 5, что может быть вызвано несколькими факторами, включая версию операционной системы и архитектуру. Рассмотрим шаги, которые помогут вам успешно установить Java 21 и решить проблемы, с которыми вы столкнулись.

Проблема:

При попытке запустить исполняемый файл Java, вы получаете сообщение об ошибке “No such file or directory”, несмотря на то что вы находитесь в правильном каталоге. Ваша система показывает, что файл java является 64-разрядным исполняемым файлом, и при этом не является динамическим, что указывает на возможные несоответствия в архитектуре или использовании неправильной версии библиотеки.

Анализ:

  1. Архитектура системы: Вы используете Raspberry Pi OS 64-bit, и для полной функциональности Java вам необходима ARM64 версия JDK. Судя по предоставленным вами выводам, вы правильно скачали версии для ARM aarch64.

  2. Версия ОС: Убедитесь, что ваша версия Raspberry Pi OS является 64-разрядной и обновленной. Вы отметили, что ваша проблема решилась после полной переустановки ОС. Это подтверждает, что возможно, предыдущая версия OS имела компоненты, которые не были полностью совместимы с Java 21.

  3. Система управления пакетами: Как вы уже заметили, OpenJDK и Oracle JDK могут не поддерживаться в долгосрочной перспективе в некоторых дистрибутивах, таких как Raspbian. Использование альтернативных репозиториев, таких как Adoptium (ранее AdoptOpenJDK) может быть обеспечением совместимости с новыми версиями Java.

Решение:

  1. Установка через пакетный менеджер:

    • Запустите следующую команду в терминале, чтобы установить Eclipse Temurin, который предлагает поддержку OpenJDK 21:
      sudo apt install temurin-21-jdk
  2. Проверка установки:

    • После завершения установки проверьте установленную версию Java, выполнив команду:
      java -version

Если вы видите вывод, который подтверждает установку Java 21, значит, вы успешно разрешили проблему.

  1. Переустановка системы:
    • Если вы решите переустановить Raspberry Pi OS, убедитесь, что вы скачали последнюю версию с официального сайта и выбрали 64-разрядный образ системы. Это значительно упрощает установку и работу с современным программным обеспечением, включая Java 21.

Дополнительные рекомендации:

  • При работе с Raspberry Pi всегда следите за обновлениями операционной системы, выполняя команду:
    sudo apt update && sudo apt upgrade
  • Регулярно проверяйте на наличие обновлений в репозиториях Java, чтобы пользоваться последними версиями и безопасными исправлениями.

Заключение:

Следуя приведенным выше шагам, вы сможете без проблем установить и использовать Java 21 на своем Raspberry Pi 5. Убедитесь, что ваша система полностью обновлена и находитесь в правильной конфигурации для работы с Java, что поможет избежать дальнейших проблем.

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

Капча загружается...