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内存设置等原因了。
本文来自博客园,作者:后山人,转载请注明原文链接:https://www.cnblogs.com/zhuhuibiao/p/16446105.html
经营好自己的现在,等待未来向我飞奔而来。