findJAVA_HOME并将其设置在RHEL上

我刚刚在RHEL机器上安装了java。 现在,我试图运行一个需要设置JAVA_HOMEvariables的程序。 什么是最好的方法弄清楚我的Java安装的安装目录,然后设置JAVA_HOME? 以下是运行java-版本的结果:

java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) 

我有一个/ usr / lib / jvm目录,但它是空的。

首先,从命令行尝试echo $JAVA_HOME 。 由于java已经在您的路径上,所以可以设置JAVA_HOME

找出我的Java安装的安装目录的最佳方法是什么?

运行which java将指出你安装which java的命令。

然后设置JAVA_HOME

您可以编辑~/.bashrc~/.bash_profile/etc/profile来设置JAVA_HOME 。 将其设置在~/etc/profile会将其设置为系统范围,这可能不是您想要的。 为了举例说明which java的输出是/opt/jdk_1.7.0_25 ,那么你只需export JAVA_HOME=/opt/jdk_1.7.0_25~/.bashrc~/.bash_profile ,然后运行source ~/.bashrc (或者如果你设置了source ~/.bash_profile )。

请注意,在这种情况下, javaPATH上,但在某些情况下,您需要添加export PATH=$PATH:$JAVA_HOME/bin以将JAVA_HOME变量添加到PATH

RHEL使用替代子系统来管理Java安装。 你可以安装多个版本的java,但是一次只能有一个是活动的。

这意味着运行which java不提供有用的信息。 无论选择哪个java安装,输出都是一样的。 运行readlink -f $(which java) (如其他评论中已经建议)或使用询问替代alternatives --display java会更好。

查看安装了OpenJDK的RHEL 6机器(随RHEL一起提供)中的示例:

 [root@example ~]# which java /usr/bin/java [root@example ~]# readlink -f $(which java) /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre/bin/java [root@example ~]# alternatives --display java | head -2 java - status is manual. link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java 

请注意,环境变量JAVA_HOME默认没有在任何地方定义,您需要自己在.bashrc中定义它,它需要它。

在前面的例子中, JAVA_HOME正确值是/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64

请参阅安装OpenJDK文档中的详细信息,搜索“可选:设置JAVA_HOME环境变量”部分。

readlink命令会显示符号链接的完整路径:

 readlink -f `which java` 

你所能做的最好的就是避免红帽的Java。

从Oracle获得你的Java并把它放在/ opt中。 然后创建符号链接/ opt / java – > / opt / jdk-someversion,然后创建/etc/profile.d/java.sh

 #!/bin/sh export JAVA_HOME=/opt/java export PATH=$JAVA_HOME/bin:$PATH 

然后,要更改系统范围的java,只需在opt中更改符号链接。 要使用多个Java版本,请使用适当的JAVA_HOME脚本。

此外,用于运行/etc/init.d脚本的/ sbin /服务脚本将剥离环境变量 – 显式执行env -i。 所以即你的tomcat不会得到JAVA_HOME,你将不得不在$ CATALINA_BASE / bin中创建setenv.sh。

这种方法的缺点是你不能从红帽获得Java更新。