it-swarm.cn

CentOS的Java_HOME的值是什么?

我已经在CentOS上通过yum安装了Java,但是另一个Java程序需要知道Java_HOME环境变量是什么。我知道有关设置环境变量的所有信息,但是我该设置为什么?Java已安装在/usr/bin/Java,它不可能在那里!

37
Rory

其实我找到了

/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/。我通过update-alternatives --display Java知道了什么,它向我显示了目录/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/Java

54
Rory

我不太确定,但是如果您安装普通的RPMS,则Java_HOME值也可以设置为此:

/usr/Java/default/

编辑:我刚刚检查了我的家庭系统。我已经创建了这个文件:

/etc/profile.d/Java.sh

其中包含:

export Java_HOME=/usr/Java/default/

我正在使用Sun的正式版本:jdk-1.6.0_12-fcs

编辑:这是 我如何设置Java

安装Java

从Oracle下载并安装Java JDK

使它成为主要对象

确保使用以下两个命令使用此Java代替OpenJDK版本:

第一

alternatives --install /usr/bin/Java java /usr/Java/default/bin/Java 999999 \
           --slave /usr/bin/keytool keytool /usr/Java/default/bin/keytool \
           --slave /usr/bin/rmiregistry rmiregistry /usr/Java/default/bin/rmiregistry

第二

alternatives --install /usr/bin/javac javac /usr/Java/default/bin/javac 999999 \
           --slave /usr/bin/jar jar /usr/Java/default/bin/jar \
           --slave /usr/bin/rmic rmic /usr/Java/default/bin/rmic

设置Java_HOME

确保所有用户的Java_HOME环境变量都设置为正确的值:

echo "export Java_HOME=/usr/Java/default/" > /etc/profile.d/Java_home.sh
20
Niels Basjes

以下内容总是很适合我:

[[email protected] ~]$ locate bin/Java
/usr/bin/Java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/Java/jdk1.6.0_31/bin/Java
/usr/Java/jdk1.6.0_31/bin/javac
/usr/Java/jdk1.6.0_31/bin/javadoc
/usr/Java/jdk1.6.0_31/bin/javah
/usr/Java/jdk1.6.0_31/bin/javap
/usr/Java/jdk1.6.0_31/bin/javaws
/usr/Java/jdk1.6.0_31/jre/bin/Java
/usr/Java/jdk1.6.0_31/jre/bin/Java_vm
/usr/Java/jdk1.6.0_31/jre/bin/javaws

这意味着我可以将Java_HOME设置为/usr/Java/jdk1.6.0_31

2
prashant

您想要将Java_HOME设置为JDK或JRE的根目录,例如:

export Java_HOME=/usr/Java/jdk1.3

如果安装了JDK(开发工具包),则ypu可能希望它指向该目录,否则请使用JRE路径(Java运行时环境)。然后,您可能希望将$ PATH环境变量设置为也包括bin目录:

export PATH=$PATH:/usr/Java/jdk1.3/bin

如果使用的是Tomcat,则可能还需要为Tomcat用户设置CATALINA_HOME。

export CATALINA_HOME=/path/to/Tomcat

要为系统设置此设置,您要编辑/ etc/profile或在/etc/profile.d文件夹中添加.sh文件。对于特定用户,您可以将其放在用户〜/ .profile或〜/ .bash_profile文件中。

2
Kyle Brandt

我考虑过如果将Java

alternatives --config Java

然后,任何硬编码的Java_HOME都会发生变化(至少会在我目前盯着的Centos 6.6上)。也就是说,没有/usr/Java

这似乎不是最好的方法(容易失败),但是在我花了10分钟的时间里,这似乎是最好的方法。

/etc/bashrc中,我将Java_HOME的设置修改为:

export Java_HOME=$(alternatives --display Java | grep current | sed 's/link currently points to //' | sed 's|/bin/Java||')

您必须在MacOSX上执行类似的操作,但没有全部grepsed来解析结果。当然alternatives提供了一个类似的简单解决方案。

无论如何,我希望能有所帮助。


更新

不,那是JRE_HOME。 JDK/SDK并不那么明显(我继续看)。

缺省情况下,alternatives似乎仅与JRE有关。我服从@Niels的答案,或者只安装Java和yum)并将Java_HOME设置为该值(诀窍就是我在哪里找到了安装位置!)。

yum install Java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm 

我注意到Java_1.8.0是到/etc/alternatives/Java_sdk_1.8.0的符号链接,因此将$ Java_HOME设置为/usr/lib/jvm/Java_1.8.0。在/etc/bashrc中。

1
HankCa

回复:Centos7,请参考/etc/Java/java.conf文件。

其中Java_HOME表示位于以下目录中:/ usr/lib/jvm/Java

我检查过,这是我通过yum加载的jdk的正确版本,所以...

我的环境默认没有设置Java_HOME,因此我在.bash_profile中设置了它

0
theRiley

我发现程序包管理器可以放置在多个位置,因此使用which(如果使用容器,则需要明确安装此程序),以下操作不那么容易

javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export Java_HOME=$javaHome

或对于JRE

javaExec=$(which Java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
0
Jules Clements

太奇怪了,拥有JAVE_HOME环境变量的全部要点是,因此您不必指定每个程序的路径,它可以通过查找此变量来获取此路径。

无论哪种方式,找到Java_HOME的环境变量的正确方法是使用echo:

[[email protected] ~]# echo $Java_HOME
/usr/Java/j2sdk1.4.2_09

无论您运行的是哪个版本,从命令行运行此命令都将显示路径。

0
Dave Drager