当前位置: 首页 > 面试题库 >

在Centos 6.6上Elasticsearch找不到Java,所有路径变量均已设置并正常工作

窦国源
2023-03-14
问题内容

我最近启动了一个无所事事的服务器,并希望让Elasticsearch继续运行。因此,我在“ chef /
Centos-6.6”无所事事的云VM上安装了Oracle Java和ES。我在“ etc / profile.d”中使用shell脚本设置了Java路径。

这是我的配置脚本:

#!/usr/bin/env bash
yum -y update

wget -O /opt/jdk-7u67-linux-x64.tar.gz --no-cookies --no-check-certificate --header   "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz"
tar xzf /opt/jdk-7u67-linux-x64.tar.gz -C /opt/
touch /etc/profile.d/java.sh
echo "export JAVA_HOME=/opt/jdk1.7.0_67" >> /etc/profile.d/java.sh
echo "export JRE_HOME=/opt/jdk1.7.0_67/jre" >> /etc/profile.d/java.sh
echo "export PATH=$PATH:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin" >> /etc/profile.d/java.sh

rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch
REPO="[elasticsearch-1.3]
name=Elasticsearch repository for 1.3.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.3/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1"
echo "$REPO" > /etc/yum.repos.d/elasticsearch.repo
yum install -y elasticsearch

安装一切正常。但是,当我运行“ sudo service elasticsearch start”时,我得到:

which: no java in (/sbin:/usr/sbin:/bin:/usr/bin)

但是,如果我为家庭用户“ echo $ PATH”,我得到:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin:/home/vagrant/bin

对于root用户$ PATH我得到:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/jdk1.7.0_67/bin:/opt/jdk1.7.0_67/jre/bin

和“ echo $ JAVA_HOME”我得到:

/opt/jdk1.7.0_67

如果我运行“哪个java”,我将得到:

/opt/jdk1.7.0_67/bin/java

如果我运行“ java”,它将显示在手册页中。

elasticsearch没有在我的Java路径中寻找它的感觉如何?为什么只在默认的Centos路径中查找?我在这里想念什么?


问题答案:

你的问题的根源是可能是init脚本(弹性在这种情况下初始化脚本)没有看到大多数的环境变量(例如JAVA_HOMEJRE_HOME等)。

如果查看ElasticSearch初始化脚本,则会看到该PATH变量在该初始化脚本中进行了显式设置,并JAVA_HOME通过循环遍历预定义的可能位置来确定:

JDK_DIRS="/usr/lib/jvm/jdk-7-oracle-x64 /usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64/ /usr/lib/jvm/java-7-openjdk-armhf /usr/lib/jvm/java-7-openjdk-i386/ /usr/lib/jvm/default-java"

因此,您可以将Java安装程序放到/usr/lib/jvm/jdk-7-oracle-x64目录中,而init脚本应将其安装。

更新资料

望着初始化脚本我注意到,你可以设置JAVA_HOME/etc/default/elasticsearch跳过通过以上(如提到的预定义的JDK位置循环源)。



 类似资料:
  • 我的java bin文件夹包含java.exe @大卫华莱士 Microsoft Windows[版本6.3.9600](c)2013 Microsoft Corporation。保留所有权利。 C:\用户\Andy\AppData\漫游\Microsoft\Windows\开始菜单\Programs\Startup>

  • 当我跑步时 $ionic cordova构建android 构建失败,出现此错误: Cordova build android找不到ANDROID_HOME环境变量。尝试设置它 尽管当我跑步时: 科尔多瓦要求 我得到以下结果: android的需求检查结果: Java JDK:已安装1.8.0 Android SDK:安装正确 Android目标:安装android-29、android-28、a

  • Log4j正在查找我的配置,因为一旦我删除它,我就会收到一条错误消息,说它找不到配置,但是它的属性在登录时不会反映出来。 log4j2。属性: Test.java: 输出: 如您所见,当记录器设置为INFO时,它将返回级别为ERROR,并且时间格式包括毫秒,即使它已被删除。 配置文件取自log4j网站,只做了一些小改动(上面提到的两个,以及) 我使用的是2.8.1版。

  • 我已经安装了java11使用 然后,我尝试了下面的方法来将JAVA\u带回家 它返回为空。因此,按照echo$JAVA\u HOME中的说明操作不会返回任何结果 当我运行ls-l/usr/bin/java时,我看不到上面链接中显示的任何jvm路径。下面是我得到的 如何设置JAVA\u主页

  • 这是运行时的stacktrace。存在。 现在,我检查了我的文件夹,在文件路径中有一个 我目前使用的是TomcatV6.0、jre7并安装了JDK1.6.0_34 堆栈跟踪 在java.library.path:C:\Program Files\Java\JRE7\bin;C:\Windows\Sun\Java\bin;C:\Windows\System32;C:\Windows\ICLS客户端\

  • 我在Windows 7机器上运行。 我安装了JavaJDK1.7。 我已经将Path和PATH环境变量设置为指向Javajdk 1.7/bin目录。 在命令提示符下执行,将生成java版本1.7.0_45。 然而,当我执行时,它会说: javac不被识别为内部或外部命令 我真的被这个问题难住了。所有其他线程似乎都通过更改环境变量解决了类似的问题,但这并不能解决我在这种情况下的问题。 当我在Cons