我刚刚在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
)。
请注意,在这种情况下, java
在PATH
上,但在某些情况下,您需要添加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更新。