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
即可得到其影射路徑,依次下去,即可看到此命令最終使用的是那個檔案,以達到瞭解其影射細節的目的
http://www.lukfor.com