Linux关于ElasticSearch使用自带JDK配置 future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_161/jre]

ElasticSearch 启动报错如下:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_161/jre] does not meet this requirement Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] output:

在不想安装JDK11的情况下,可以使用ElasticSearch 内置的JDK
目录如下:

ES就很神奇:
elasticsearch默认启用时首先找系统安装的jdk,如果没有安装jkd的话就使用es自带的jdk。
如果系统没有安装jdk的话就不需要配置jdk,es会启用自带jdk。这样的话,就不需要管jdk设置了。
如果系统安装了jkd,反而存在jdk和elasticsearch版本不一致的问题,导致es无法启动。(ps:不知道为什么开发则不搞一下发现版本冲突时使用自己内置的JDK,从而减少不必要的麻烦)
在/usr/local/elasticsearch/bin目录下vim elasticsearch-env:大约39至50行定义了jdk的选择方法

**********************
# now set the path to java
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
*********************

JAVA_HOME指系统自己安装的jkd;ES_HOME指 elasticsearch自带的jdk。
使用elasticsearch自带的jdk
方法一
取消检查启用自行安装的java,参数为JAVA_HOME
修改为:删除判断即可

****************************
# now set the path to java
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
****************************

正常启动成功

方法二
指定启动时使用es自带的jdk,参数为ES_HOME
页首脚本代码行set -e -o pipefail下添加es自带的jdk位置:export JAVA_HOME =/usr/local/esl/elasticsearch-7.4.2/jdk。
/usr/local/esl/elasticsearch-7.4.2/jdk修改为自己的elasticsearch安装路径。

**************************
#!/bin/bash
set -e -o pipefail
#使用es自带的jdk(开始)
export JAVA_HOME =/usr/local/esl/elasticsearch-7.4.2/jdk
CDPATH=""
SCRIPT="$0"
**************************

elasticsearch默认启用自带的jdk设置完成。
如果启动时还有jdk报错之类的问题,则有可能是es内存设置等原因了。

posted @ 2022-07-05 13:44  后山人  阅读(8899)  评论(1编辑  收藏  举报