我最近得到了新的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位架构的软件,你就可以了。
Rosetta 2
在我完成了我的Java设置后,我知道我们还可以安装 "Rosetta 2"。这个小工具在后台运行,允许我们在苹果芯片的Mac上运行针对英特尔x64架构的软件。