📅  最后修改于: 2023-12-03 15:21:25.766000             🧑  作者: Mango
如果你在使用 Elasticsearch 或其他基于 Elasticsearch 的软件时遇到了下面这个错误:
在“C:\Program Files\Java\jdk1.8.0_241\bin\java.exe”的 JAVA_HOME 中找不到 java
那说明你使用了错误的环境变量名。正确的环境变量名应该为 ES_JAVA_HOME
,而不是 JAVA_HOME
。
在 Elasticsearch 5.0 版本之前,官方文档中建议使用环境变量 JAVA_HOME
来指定 JVM 的路径。这是因为早期的 Elasticsearch 版本使用的是类似于 Maven 的启动脚本,该脚本会读取 JAVA_HOME
环境变量来确定所使用的 JVM 版本。
然而,自 Elasticsearch 5.0 版本起,官方文档已经更新,不再推荐使用 JAVA_HOME
环境变量。相反,现在应该使用 ES_JAVA_HOME
环境变量来指定 Elasticsearch 所使用的 JVM 路径。
如果你遇到了上述错误,那么你需要停止 Elasticsearch 进程,然后修改启动 Elasticsearch 的脚本。在脚本中,你需要把 JAVA_HOME
替换为 ES_JAVA_HOME
。
具体来说,如果你使用的是 Linux 系统,那么你需要找到 bin/elasticsearch
脚本,把其中的以下行:
# resolve links - $0 may be a softlink
PRG="$0"
替换为:
# resolve links - $0 may be a softlink
readonly ES_HOME="$(cd "$(dirname "$0")/../.."; pwd -P)"
readonly ES_JAVA_HOME="${ES_JAVA_HOME:-$JAVA_HOME}"
其中的 readonly ES_JAVA_HOME="${ES_JAVA_HOME:-$JAVA_HOME}"
就是将原来的 JAVA_HOME
改为了 ES_JAVA_HOME
。
如果你使用的是 Windows 系统,那么你需要找到 bin\elasticsearch.bat
脚本,把其中的以下行:
if not defined JAVA_HOME (
set JAVA=java
) else (
set JAVA="%JAVA_HOME%\bin\java"
)
替换为:
if not defined ES_JAVA_HOME (
set JAVA=java
) else (
set JAVA="%ES_JAVA_HOME%\bin\java"
)
同样地,这一行就是将原来的 JAVA_HOME
改为了 ES_JAVA_HOME
。
为了避免出现上述错误,建议使用正确的环境变量名 ES_JAVA_HOME
。如果你已经使用了错误的环境变量名 JAVA_HOME
,那么你需要根据上述解决方案进行修改。