[已修复] 可执行文件中的 CPU 类型错误 - 在 MacBook 上安装 Java
我最近买了新的 MacBook Air M1,首先想安装的是 Java。因此,我下载了 OpenJDK tar 文件,将其解压缩并尝试运行“java -version”命令,结果出现了错误:
-bash: ./java: 可执行文件中的 CPU 类型错误
这对我来说是新鲜事,我使用 Java 和 Mac OS 已经很久了,从来没有见过这种错误。经过一些在线搜索和调试,我发现发生这种情况是因为新的 MacBook M1 芯片使用的是 ARM64 架构,而从 JDK 站点下载的 OpenJDK 二进制文件是为 x64 架构构建的,而英特尔处理器使用的是 x64 架构。
修复-bash:./java:可执行文件中的 CPU 类型错误
确定问题后,解决方案很简单。我所需要的只是找到一个支持 ARM64 架构的 OpenJDK 实现。经过一番搜索,我找到了Azul Zulu OpenJDK 构建页面,它有 ARM 64 位架构构建。
我下载了 tar 文件,解压并运行 java 命令,它运行正常。
$ curl -O https://cdn.azul.com/zulu/bin/zulu16.30.19-ca-jdk16.0.1-macosx_aarch64.tar.gz
$ tar -xvf zulu16.30.19-ca-jdk16.0.1-macosx_aarch64.tar.gz
$ cd zulu16.30.19-ca-jdk16.0.1-macosx_aarch64/bin
$ ./java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment Zulu16.30+19-CA (build 16.0.1+9)
OpenJDK 64-Bit Server VM Zulu16.30+19-CA (build 16.0.1+9, mixed mode)
$
结论
这是我第一次遇到“可执行文件中的 CPU 类型错误”。但是,如果您遇到这种情况,则意味着您也遇到了这种情况。它可能是 Java 或任何其他软件。解决方案是找到基于 ARM 64 位架构的软件版本,这样就没问题了。
罗塞塔 2 号
在我完成 Java 设置后,我发现我们还可以安装“Rosetta 2”。这个小工具在后台运行,允许我们在 Apple 芯片 Mac 上运行为 Intel x64 架构构建的软件。请阅读此Apple 支持主题以了解更多信息。