Вопрос или проблема
Я не могу установить 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-разрядным исполняемым файлом, и при этом не является динамическим, что указывает на возможные несоответствия в архитектуре или использовании неправильной версии библиотеки.
Анализ:
-
Архитектура системы: Вы используете Raspberry Pi OS 64-bit, и для полной функциональности Java вам необходима ARM64 версия JDK. Судя по предоставленным вами выводам, вы правильно скачали версии для ARM aarch64.
-
Версия ОС: Убедитесь, что ваша версия Raspberry Pi OS является 64-разрядной и обновленной. Вы отметили, что ваша проблема решилась после полной переустановки ОС. Это подтверждает, что возможно, предыдущая версия OS имела компоненты, которые не были полностью совместимы с Java 21.
-
Система управления пакетами: Как вы уже заметили, OpenJDK и Oracle JDK могут не поддерживаться в долгосрочной перспективе в некоторых дистрибутивах, таких как Raspbian. Использование альтернативных репозиториев, таких как Adoptium (ранее AdoptOpenJDK) может быть обеспечением совместимости с новыми версиями Java.
Решение:
-
Установка через пакетный менеджер:
- Запустите следующую команду в терминале, чтобы установить Eclipse Temurin, который предлагает поддержку OpenJDK 21:
sudo apt install temurin-21-jdk
- Запустите следующую команду в терминале, чтобы установить Eclipse Temurin, который предлагает поддержку OpenJDK 21:
-
Проверка установки:
- После завершения установки проверьте установленную версию Java, выполнив команду:
java -version
- После завершения установки проверьте установленную версию Java, выполнив команду:
Если вы видите вывод, который подтверждает установку Java 21, значит, вы успешно разрешили проблему.
- Переустановка системы:
- Если вы решите переустановить Raspberry Pi OS, убедитесь, что вы скачали последнюю версию с официального сайта и выбрали 64-разрядный образ системы. Это значительно упрощает установку и работу с современным программным обеспечением, включая Java 21.
Дополнительные рекомендации:
- При работе с Raspberry Pi всегда следите за обновлениями операционной системы, выполняя команду:
sudo apt update && sudo apt upgrade
- Регулярно проверяйте на наличие обновлений в репозиториях Java, чтобы пользоваться последними версиями и безопасными исправлениями.
Заключение:
Следуя приведенным выше шагам, вы сможете без проблем установить и использовать Java 21 на своем Raspberry Pi 5. Убедитесь, что ваша система полностью обновлена и находитесь в правильной конфигурации для работы с Java, что поможет избежать дальнейших проблем.