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

时间:2015-10-30 15:08:04

标签: java linux elasticsearch environment-variables

我已经在/ 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]

在错误中,它表示""启动elasticsearch:其中:没有java in(/ sbin:/ usr / sbin:/ bin:/ usr / bin)"&#34 ;,这意味着java在该路径中并不是真的,但是当我回显$ PATH时,它表明java在路径中?

11 个答案:

答案 0 :(得分:34)

在阅读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路径问题。

答案 1 :(得分:9)

运行命令

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中展开给所有用户

答案 2 :(得分:5)

特别是对于OpenBSD6.0,添加

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

.profile

这个特定版本的jdk,以及可能的基本路径本身在OpenBSD的后续版本和以前版本中都会发生变化,您已收到警告。

答案 3 :(得分:1)

要实现它 - 虽然不是很好 - 你可以在/ usr / bin中设置一个指向java的符号链接(由elasticsearch列出可以看到):

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

答案 4 :(得分:1)

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

的文件

这可能会有所帮助,所以我在这个文件中定义了JAVA_HOME,并且它可以工作。

你可以从here获得更多

答案 5 :(得分:0)

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

为什么不保持简单:

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

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

答案 6 :(得分:0)

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

  

导出JAVA_HOME = / path / to / java / jdk

     

export PATH = $ JAVA_HOME / bin:$ PATH

答案 7 :(得分:0)

在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

答案 8 :(得分:0)

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

 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。我希望这会有所帮助。

答案 9 :(得分:0)

您需要在/ etc / default / elasticsearch中设置JAVA_HOME,例如
cat /etc/default/elasticsearch JAVA_HOME=/var/local/jdk1.8.0_151

下一次开始 /etc/init.d/elasticsearch start
ES正在运行。 我的操作系统ubuntu18.04。

答案 10 :(得分:0)

如果您使用的是“未安装”的Java,请检查“ elasticsearch”用户是否有权访问您的JAVA_HOME目录和所有父目录所定义的目录。那是我的问题。