Запустите простую команду java
в Ubuntu и обнаружите следующие ошибки:
$ java -version bash: /usr/bin/java: cannot execute binary file: Exec format error
P.S Протестировано с Java 15 и Ubuntu 20
1. Проблема – Скачать неправильная сборка JDK
Ошибка Ошибка формата Exec
означает, что мы загружаем неправильную сборку JDK для определенной платформы.
Например, процессор AMD , основанный на архитектуре x86_64 .
$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian Address sizes: 43 bits physical, 48 bits virtual CPU(s): 24 On-line CPU(s) list: 0-23 Thread(s) per core: 2 Core(s) per socket: 12 Socket(s): 1 NUMA node(s): 1 Vendor ID: AuthenticAMD CPU family: 23 Model: 113 Model name: AMD Ryzen 9 3900X 12-Core Processor
И мы загружаем Linux/AArch64
сборку JDK.
Попробуйте запустить команду java
, и мы столкнемся с приведенной ниже ошибкой:
$ java -version bash: /usr/bin/java: cannot execute binary file: Exec format error
2. Решение – Разница между процессорами Intel, AMD и ARM
Процессоры Intel и AMD основаны на x86_64 архитектуре; AArch64 предназначен для процессора ARM, который основан на архитектуре ARM .
Дальнейшее чтение |/Quora – В чем разница между Intel, AMD и Процессор ARM
Для процессоров Intel или AMD в Linux, пожалуйста, загрузите JDK Linux/x64
сборка.
Для процессора ARM в Linux, пожалуйста, загрузите JDK Linux/AArch64
сборка.
Рекомендации
- Википедия – Архитектура ARM
- Википедия – AMD Ryzen
- Quora – В чем разница между Intel, AMD и Процессор ARM
- Проект порта OpenJDK AArch64
- Зачем использовать архитектуру Arm?
Оригинал: “https://mkyong.com/java/bash-usr-bin-java-cannot-execute-binary-file-exec-format-error/”