CentOS的JAVA_HOME的值是什么?


37

我已经在CentOS上通过yum安装了Java,但是另一个Java程序需要知道JAVA_HOME环境变量是什么。我对设置环境变量一无所知,但是我将其设置为什么呢?java安装在中/usr/bin/java,它不能在那里!

Answers:


54

其实我找到了

/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


20

我不太确定,但是如果您安装普通的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

哦,有趣。:)
罗里

1
/usr/java/default我的CentOS 6包装盒中没有安装OpenJDK 1.6和1.7的东西。
Daniel Serodio

@DanielSerodio正确。我清楚地描述了“从Oracle下载并安装Java JDK”,然后它确实存在。
Niels Basjes 2013年

2

您想要将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文件中。


我想知道如果以超级用户身份运行时安装是否不为您执行此操作是否有充分的理由,我总是会感到恼火...
Kyle Brandt

2

下面的代码总是很适合我:

[user@base ~]$ 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


1

我考虑了以下问题:是否更改了与以下版本一起使用的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上执行类似的操作,但不能全部执行,grep然后sed解析出结果。当然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


0

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

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

[root@host ~]# echo $JAVA_HOME
/usr/java/j2sdk1.4.2_09

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


2
尚未设置变量。
罗里

0

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

其中JAVA_HOME表示位于以下目录中:/ usr / lib / jvm / java

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

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


0

我发现包管理器可以在不同的地点放置,因此使用(你将需要如果使用的是容器明确安装此)以下是有点不太脆

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
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.