RedHat下JDK1.6安装-利用alternative实现多版本并存(Ubuntu同理)

虽然本文讲的是RH下面的配置,不过Ubuntu里也是一样的!

RedHat es下安装过程很简单,Sun下载JDK1.6包,解压,然后rpm安装

安装完后,在etc/profile.d/下建立java.sh,代码如下

JAVA_HOME=/usr/java/jdk1.6.0

PATH=$PATH: $JAVA_HOME/bin

CLASSPATH=.: $JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

注销

重新登陆

特别注意:设置变量时,RedHat下变量分隔符为 冒号 : 而不是Win系的 分
号 ;

[root@localhost ~]# echo $CLASSPATH

.:/usr/java/jdk1.6.0/lib/dt.jar:/usr/java/jdk1.6.0/lib/tools.jar

[root@localhost ~]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:

/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/java/jdk1.6.0/bin:/root/bin:

/usr/java/jdk1.6.0/bin

[root@localhost ~]# echo $JAVA_HOME

/usr/java/jdk1.6.0

问题:很不幸,控制台下 java -version,我看到的却是1.4.0

原来我的系统中已经安装过其他java版本

难道安装sun新版jdk前需要卸载这个jdk1.4.0?

google 后发现,原来RedHat下远没有Win系统这么麻烦。RedHat中有一种可替代系统(alternatives system)机制, 来抽象出不同软件或者同一软件不同版本运行时的位置和“商标”,以消除更替环境的需要。而update-alternatives 就是这种机制的的实现。因此可以用update-alternatives 来实现两个jdk并存,并且根据需要方便切换。

首选 update-alternatives --dispaly java,看看当前java软件的当前配置,尤其是路径的优先级

然后我们配置java软件配置,使其使用我们刚才的JDK1.6

update-alternatives --config java

如果一切顺利这时候我们可以看到系统中可供使用的java配置方案。不过由于JDK1.6版本比较新,我本身的RedHat无法检测到,所以需要利用update-alternatives --install选项手工添加再可选择列表中

我们采用 update-alternatives --install 选项,赋予JDK1.6这新JVM最高的级别(设置为60),以达到添加如列表中的目的,具体如下

# update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0/jre/bin/java 60
--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/lib/jvm/jdk1.6.0/man/man1/java.1

然后update-alternatives --config java选择添加的JDK1.6配置方案

这时如果在终端下查看java -version,就会看到1.6字样

注:由于update-alternatives本质是利用ln的方式实现影射的方式来实现可替代系统

因此具体使用时,我们也可以通过命令查看其映像路径,进而了解其影射细节。以java为例

终端下 # which java

/usr/lib/java

#ls -l usr/lib/java

即可得到其影射路径,依次下去,即可看到此命令最终使用的是那个文件,以达到了解其影射细节的目的

你可能感兴趣的:(java,jvm,jdk,redhat,ubuntu)