在MacBook上安装Java时出现”固定的”可执行的坏CPU类型问题。

我最近购买了新的MacBook Air M1,第一件事我想在上面安装Java。因此,我下载了OpenJDK的tar文件,解压后尝试运行“java -version”命令,结果出现错误。

-命令错误:./java:可执行的CPU类型错误

这对我来说是一件新鲜事,我已经在Java和Mac OS上工作了这么长时间,从未见过这种错误。在进行一些在线搜索和调试后,我发现这是因为新款MacBook M1芯片使用ARM64架构,而从JDK网站下载的OpenJDK二进制文件是为x64架构构建的,而x64架构是由Intel处理器所使用的。

修复 -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支持帖子上阅读更多信息。