JAVA 虽然设置了 JAVA_HOME 但不在路径中

JAVA not in path although JAVA_HOME set

我已经在 /etc/profile 中设置了所有的需求变量,但是当启动 elasticsearch 时,仍然找不到 Java。我如何设置环境变量。那是我的 /etc/profile

PATH=$PATH:$HOME/bin
APPLICATIONS=$HOME/Applications
JAVA_HOME=$APPLICATIONS/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH

export APPLICATIONS
export JAVA_HOME
export PATH

命令输出

[root@87500e63467f Applications]# echo $PATH
/root/Applications/jdk1.7.0_79/bin:/root/Applications/jdk1.7.0_79/bin:/root/Applications/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin:/root/bin
[root@87500e63467f Applications]# echo $JAVA_HOME
/root/Applications/jdk1.7.0_79
[root@87500e63467f Applications]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
error: "Read-only file system" setting key "vm.max_map_count"
Starting elasticsearch: which: no java in (/sbin:/usr/sbin:/bin:/usr/bin)
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME
                                                           [FAILED]

在错误中,它说“"Starting elasticsearch: which: no java in (/sbin:/usr/sbin:/bin:/usr/bin)"”,这意味着 java 确实不在该路径中,但是当我回显 $PATH 时,它显示 java 在路径中 ?

确保您为 JAVA_HOME 提供的路径是正确的。

为什么不保持简单:

export PATH=$PATH:/path/to/jdk

尝试将 Java 主页设置为 /jdk1.7.0_79/bin 看看是否有帮助。

只需在 bashrc/etc/ 目录下的 profile 文件中添加以下路径。

export JAVA_HOME=/path/to/java/jdk

export PATH=$JAVA_HOME/bin:$PATH

要让它继续运行 - 虽然不太好 - 你可以在 /usr/bin 中为你的 java 设置一个符号 link(由 elasticsearch 列出以供查看):

ln -s /root/Applications/jdk1.7.0_79/bin/java /usr/bin/java

阅读 ElasticSearch 的文档后,我发现如果您 运行 使用 Ubuntu 或 Debian,由于许可问题,该软件包仅随 OpenJDK 一起提供。为了解决这个 Java 路径问题,我在安装 ElasticSearch 后安装了以下内容(按照文档的指示):

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
java -version

然后 运行 sudo service elasticsearch start 一切正常,我不再有 Java 路径问题。

我注意到输出中有一个名为 /etc/sysconfig/elasticsearch

的文件

这可能会奏效,所以我在这个文件中定义了 JAVA_HOME,并且它有效。

您可以从 here

获得更多

运行命令

java -XshowSettings

搜索条目 java.home = /usr/java/jdk1.8.0_91/jre

导出 bash 个人资料中的 java_home

export JAVA_HOME=/usr/java/jdk1.8.0_91/jre

或在 /etc/profile 中扩展到所有用户

专门针对OpenBSD6.0,添加

export JAVA_HOME=/usr/local/jdk-1.8.0/

给你的 .profile.

此特定版本 jdk,可能基本路径本身在 OpenBSD 的后续和以前版本中可能会发生变化,您已被警告。

在 debian 机器上安装 Elasticsearch 5 时遇到同样的问题。我就是这样安装的 Java 9:

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java9-installer

我不知道这是否是您的特殊情况,但是使用 ElasticSearch/Kibana/Logstash(ELK 堆栈)文档在 Ubuntu 16.04 上对我不起作用。将此 post 的内容与其他几个内容放在一起,我的解决方案是:

 sudo add-apt-repository ppa:webupd8team/java
 sudo apt-get update
 sudo apt-get install oracle-java8-installer
 # checking my work given 9 won't work with OSSEC you can use
 # java -version
 sudo usermod -a -G ossec logstash
 sudo apt-get install logstash
 sudo systemctl daemon-reload
 sudo systemctl enable logstash.service
 sudo systemctl start logstash.service

我在 ubuntu 16.04 的最终结果是

sudo java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

如果您使用 wazuh,请务必为其特定版本添加 PPA。希望对您有所帮助。

你需要在/etc/default/elasticsearch中设置JAVA_HOME,喜欢
cat /etc/default/elasticsearch JAVA_HOME=/var/local/jdk1.8.0_151

下一个开始 /etc/init.d/elasticsearch start
ES 运行。 我的 OS ubuntu18.04.

如果您正在使用 "not installed" Java,请检查您的 "elasticsearch" 用户是否有权访问您定义的 JAVA_HOME 目录和所有父目录。那是我的问题..