如何在CentOS上正确设置JAVA_HOME?


8

我正在尝试设置JAVA_HOME,以便可以在本教程的帮助下安装Apache Solr。我通过root用户使用ssh连接到服务器

要允许正在运行的sh脚本安装Apache Solr,请执行以下操作:

mount | grep noexec

使用exec选项重新挂载文件系统:

mount -o remount,exec /dev/md1

然后,每次我尝试使用以下命令进行安装时

bin/install_solr_service.sh /tmp/solr-5.3.1.tgz

我收到以下消息:

WARNING: /opt/solr-5.3.1 already exists! Skipping extract ...

Creating /etc/init.d/solr script ...
The currently defined JAVA_HOME (/usr/local/jdk) refers
to a location where Java could not be found.  Aborting.
Either fix the JAVA_HOME variable or remove it from the
environment so that the system PATH will be searched.
The currently defined JAVA_HOME (/usr/local/jdk) refers
to a location where Java could not be found.  Aborting.
Either fix the JAVA_HOME variable or remove it from the
environment so that the system PATH will be searched.
Service solr installed.

这是我到目前为止尝试过的:

nano /root/.bash_profile 
nano /etc/profile

我将以下内容添加到上面的文件中并保存了它们

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
export PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:$PATH

那没用。

我创建了以下文件/etc/profile.d/java.sh并放入其中:

export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/
export PATH=$PATH:$JRE_HOME/bin

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
export JAVA_PATH=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin

并运行以下命令:

source java.sh

那也没有用。

我试图运行以下命令:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64

完全没有运气。

但是当运行以下命令时,我得到的是

echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64
echo $PATH
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/jdk/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre//bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

问题在哪里?我没有看到任何Java错误
sivann 2015年

Answers:


9

您想将其指向JRE。回到这里我有

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre/

如果使用bash,建议将其放入/etc/bashrc(基于RH)或/etc/bash.bashrc(基于Debian)

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")

假设您在这里有一个Java链接。这更多是Debian特有的事情,请为CentOS进行相应更改
Rui F Ribeiro

1
CentOS 7在这里工作。
Jodka Lemon

1
仅在覆盖内部的JAVA_HOME之后,此方法才对我有用/etc/bashrc
ovi

@ovi我正在使用Debian,您的发行版是什么?
Rui F Ribeiro

@RuiFRibeiro Centos 6.7。也许值得一提的是/etc/bashrc已经包含以下内容: export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/classes.zip
ovi

2

而不是从安装目录复制出的文件可能会更好,设置SOLR_JAVA_HOME/etc/default/solr.in.sh该位置jre的文件夹中安装如usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/


2

我正在阅读我的问题并找到答案。这是我所做的:

我撤消了对/root/.bash_profile/ etc / profile的所有更改

然后,我在/ usr / local /文件夹中创建了一个名为jdk的文件夹,如下所示

mkdir /usr/local/jdk

由于这是jdk的预期存储位置,因此我将jdk文件复制到了newcp -R /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64 / jre / * / usr / local / jdk /文件夹如下:

cp -R /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6_7.x86_64/jre/* /usr/local/jdk/

就像我现在能够安装Apache Solr一样简单


cp -R将破坏属性,请使用cp -a。
sivann 2015年

0

就我而言,完成所有这些更改后,将更改为/ etc / profile。我进入了

> source /etc/profile 

它为我工作。我检查了-java -version

并用 > echo $JAVA_HOME

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.