树莓派上ElasticSearch无法运行求助:Java版本适配及启动报错
问题分析与解决方法
核心问题
你的问题根源是ElasticSearch版本与Java 11不兼容,同时旧的init启动脚本无法正确识别OpenJDK 11。
错误拆解
JVM flavor 'sun6' not understood&No java runtime was found
旧的/etc/init.d/elasticsearch脚本是针对Sun/Oracle JDK 6编写的,无法识别OpenJDK 11的版本标识,导致脚本误判为未安装Java。Unrecognized VM option 'UseParNewGC'UseParNewGC是Java 8及更早版本的垃圾回收器参数,Java 11已移除该参数,说明你安装的ElasticSearch是仅支持Java 8的旧版本(比如ElasticSearch 6.x及更早)。
解决步骤
1. 对齐ElasticSearch与Java版本兼容性
ElasticSearch对Java版本有严格要求:
- ElasticSearch 6.x:仅支持Java 8
- ElasticSearch 7.x:支持Java 8和Java 11
- ElasticSearch 8.x:推荐Java 17,兼容Java 11
如果要保留Java 11,需卸载当前ES版本,重新安装7.x或8.x版本;如果坚持用现有ES版本,需卸载Java 11,安装Java 8。
2. 修复init脚本的Java识别问题(针对ES 7.x+)
若已安装兼容Java 11的ES版本仍出现Java未找到的错误,可修改/etc/init.d/elasticsearch脚本:
- 在脚本开头添加Java环境变量指定:
路径可通过export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhfupdate-alternatives --list java命令查看实际安装位置。
3. 正确查看ElasticSearch版本
不要使用./bin/elasticsearch --version,正确命令为:
./bin/elasticsearch-version
4. 重启服务并验证
修改完成后,重新加载配置并启动服务:
sudo systemctl daemon-reload sudo service elasticsearch restart
验证服务状态与连接:
sudo service elasticsearch status curl localhost:9200
内容的提问来源于stack exchange,提问作者arpit joshi
相关产品推荐
相关产品推荐

