brew install elasticsearch on M1 macbook 导致 "Bad CPU type in executable" 错误

brew install elasticsearch on M1 macbook results in "Bad CPU type in executable" error

我有一台配备 M1 处理器的全新 Macbook Air

按照官方指南https://www.elastic.co/guide/en/elasticsearch/reference/current/brew.html我尝试安装elasticsearch 7:

brew tap elastic/tap
brew install elastic/tap/elasticsearch-full

一旦我尝试用 $ elasticsearch 启动它,我得到这个错误:

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/bin/elasticsearch-env: line 83: /opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java: Bad CPU type in executable

如果我尝试使用 brew services start elastic/tap/elasticsearch-full 启动服务,它将失败并且我会在日志文件 /opt/homebrew/var/log/elasticsearch.log

中得到同样的错误
/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/bin/elasticsearch-env: line 83: /opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java: Bad CPU type in executable

打开导致问题行 83 的文件 (elasticsearch-env) 后,内容如下:

# check the Java version
"$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.java_version_checker.JavaVersionChecker

如果我尝试执行

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java

我收到错误

 Bad CPU type in executable

所以在 elasticsearch-full brew 安装过程中似乎安装了一个糟糕的 Java 架构(也许不是 M1,而是 x84 或其他?)。这是几小时前购买的全新 Macbook。 Elasticsearch 是我尝试在其上进行 brew install 的第一件事(因此之前没有安装 Java 应用程序)

有人知道如何解决这个问题吗?

好的,问题是我需要单独安装 Java JDK。

我刚刚安装了 Java OSX ARM DMG,然后 ES 就可以工作了

只要$ java -version不报错就不会出现这个错误

您也可以通过在 ARM 上安装 Rosetta 2 来解决此问题 Mac: softwareupdate --install-rosetta.

显然 brew 仍然安装 64 位版本的 elasticsearch。