M1 Mac - 启动 ElasticSearch 的问题。无法运行 jdk/bin/java

Posted

技术标签:

【中文标题】M1 Mac - 启动 ElasticSearch 的问题。无法运行 jdk/bin/java【英文标题】:M1 Mac - Issue bringing up ElasticSearch. Cannot run jdk/bin/java 【发布时间】:2021-05-03 20:45:39 【问题描述】:

做了一些搜索无济于事。尝试使用 Elasticsearch docker 容器设置项目。可以在我的旧英特尔 MacBook 上使用,但新系统到目前为止还没有运气。

elasticsearch    | Exception in thread "main" java.io.IOException: Cannot run program "/usr/share/elasticsearch/jdk/bin/java": error=0, Failed to exec spawn helper.
elasticsearch    |  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
elasticsearch    |  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
elasticsearch    |  at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:111)
elasticsearch    |  at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
elasticsearch    |  at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
elasticsearch    |  at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
elasticsearch    | Caused by: java.io.IOException: error=0, Failed to exec spawn helper.
elasticsearch    |  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
elasticsearch    |  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:319)
elasticsearch    |  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:250)
elasticsearch    |  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
elasticsearch    |  ... 5 more
elasticsearch exited with code 1

非常感谢任何帮助或指出正确的方向!

【问题讨论】:

【参考方案1】:

使用来自 dockerhub 的图像也遇到了这个问题,但现在使用 official docker build from Elastic 似乎可以在我的 M1 Mac 上正常工作。

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.2

【讨论】:

这个解决方案解决了这个问题!感谢您的帮助! 在 M1 上也为我修复了它:-) 版本 7.10.2 :) 有趣,非常感谢,它有效 ``` $ docker --version Docker 版本 20.10.8,构建 3967b7d ``` ``` $ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=单节点”docker.elastic.co/elasticsearch/elasticsearch:7.10.2 警告:请求的图像平台(linux/amd64)与检测到的主机平台(linux/arm64/v8)不匹配,并且没有请求特定平台异常线程“main”java.io.IOException:无法运行程序“/usr/share/elasticsearch/jdk/bin/java”:错误=0,无法执行生成助手:pid:233,退出值:1```指定docker run --platform=linux/amd64 失败,有什么想法吗?【参考方案2】:

将 elasticsearch 版本从 7.5.1 更改为 7.10.2。 (ELK_VERSION=7.10.2)

【讨论】:

【参考方案3】:

根据这条评论:https://github.com/opendistro/for-elasticsearch-docs/issues/385#issuecomment-867198711 有针对 Apple M1 的特定版本,后缀为 -arm64,例如:

docker.elastic.co/elasticsearch/elasticsearch:7.10.2-arm64

【讨论】:

以上是关于M1 Mac - 启动 ElasticSearch 的问题。无法运行 jdk/bin/java的主要内容,如果未能解决你的问题,请参考以下文章

mac m1运行jeecgboot指南

应用程序 Spyder 启动可能产生错误 Mac M1 芯片

已解决Apple Mac M1 docker环境下nacos无法启动

mac m1安装mysql

优秀的Mac效率工具:HapiGo for Mac中文版支持m1芯片

(M1 Mac) Android Studio 未检测到 Android 模拟器