在 M1 macbook 上brew install elasticsearch 导致“可执行文件中的 CPU 类型错误”错误

equ*_*nt8 7 homebrew elasticsearch

我有一台配备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
Run Code Online (Sandbox Code Playgroud)

一旦我尝试启动它,$ 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
Run Code Online (Sandbox Code Playgroud)

如果我尝试启动服务,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
Run Code Online (Sandbox Code Playgroud)

elasticsearch-env一旦我打开导致问题的文件 ( ),第 83 行将显示:

# check the Java version
"$JAVA" "$XSHARE" -cp "$ES_CLASSPATH" org.elasticsearch.tools.java_version_checker.JavaVersionChecker
Run Code Online (Sandbox Code Playgroud)

如果我尝试执行

/opt/homebrew/Cellar/elasticsearch-full/7.16.2/libexec/jdk.app/Contents/Home/bin/java
Run Code Online (Sandbox Code Playgroud)

我收到错误

 Bad CPU type in executable
Run Code Online (Sandbox Code Playgroud)

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

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

Tji*_*tse 10

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

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


equ*_*nt8 2

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

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

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