1.下載jdk1.7 百度雲鏈接: https://pan.baidu.com/s/15vXLO2eV18eVvmt-R5jGnQ 密碼: 1gd6 2.解壓壓縮包 通過終端在/usr/local下新建java文件夾, [root@localhost ~]# mkdir/usr/local/java ...
1.下載jdk1.7
百度雲鏈接: https://pan.baidu.com/s/15vXLO2eV18eVvmt-R5jGnQ 密碼: 1gd6
2.解壓壓縮包
通過終端在/usr/local下新建java文件夾,
[root@localhost ~]# mkdir/usr/local/java
[root@localhost ~]# cd /usr/local/java
(不通過終端直接新建也可以)
將jdk壓縮包放進java文件夾下,然後進行解壓,
[root@localhost java]# tar -zxvf jdk7u79linuxx64.tar.gz
3.配置jdk環境
[root@localhost java]# vi /etc/profile
打開之後在末尾添加
JAVA_HOME=/usr/local/java/jdk1.7.0_79
JRE_HOME=/usr/local/java/jdk1.7.0_79/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
修改之後按Esc,再輸入:wq保存
讓修改生效:[root@localhost java]# source /etc/profile
此時jdk已經算是配置好了,
註意:
- 在linux系統中,由於涉及到版權問題,在大部分linux系統的發行版本中,預設都安裝了OpenJDK,並且OpenJDK的java命令也已經加入到環境變數中了。在剛裝好的linux系統中,運行java-version,輸出如下(根據JDK版本不同,輸出的版本可能不同):javaversion"1.7.0_131"OpenJDKRuntimeEnvironment(rhel-2.6.9.0.el6_8-x86_64u131-b00)但在進行java開發時,
-
在linux系統中,由於涉及到版權問題,在大部分linux系統的發行版本中,預設都安裝了OpenJDK,並且OpenJDK的java命令也已經加入到環境變數中了。
在剛裝好的linux系統中,運行java -version,輸出如下(根據JDK版本不同,輸出的版本可能不同):
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)但在進行java開發時,我們大多是需要使用Sun(準確的說應該是Oracle)的JDK,所以我們會去Oracle官網下載相應版本的JDK進行安裝。
如何在linux上安裝,在此不在贅述。
在linux上安裝完JDK後,我們會在~/.bash_profile 把安裝的java加入到環境變數中。原以為就萬事大吉了,在運行java程式時會使用自己安裝的JDK。
-
如果你是這麼想的就大錯特錯了,在文章開頭講的,由於linux系統的發行版中預設安裝的時OpenJDK,儘管我們把安裝的SunJDK的java命令也加入到環境變數中,但是我們運行
java -version,輸出確還是和之前一樣:
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)這要這麼破!!!
-
一、查找原因
不急,先運行
whereis java,輸出如下:
java: /usr/bin/java /etc/java /usr/lib/java /usr/lib64/java /usr/share/java /usr/local/java在幾個地方有java命令,其中/usr/local/java是我自己安裝的SunJDK的java命令所在的目錄,而/usr/bin/java是系統中預設安裝的java命令所在的目錄。
原因就在這,
我們執行
ls -la /usr/bin/java,輸入如下:
lrwxrwxrwx 1 root root 22 May 14 16:53 /usr/bin/java -> /etc/alternatives/java
一看這是一個軟連接,我們cd到/etc/alternatives目錄下看個究竟,
然後執行 ls -la,輸入比較多,而且很多軟鏈,其中有一個
lrwxrwxrwx 1 root root 46 May 14 18:22 java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
到此,應該明白了,java命令其實指向的是OpenJDK中的java命令,所以才會出現我們把自己安裝的SunJDK的java命令配置到環境變數中後,依然不起作用。
所以我們要做的就是需要把java的軟鏈指向我們自己安裝的SunJDK的java命令,也即/usr/local/java。
二、使用安裝的JDK替代系統預設的OpenJDK
linux中提供了update-alternatives命令,update-alternatives是linux系統(大部分linux系統都支持此命令)中專門維護系統命令鏈接符的工具,通過它可以很方便的設置系統預設使用哪個命令、哪個軟體版本,而所有的這些就構成了備選方案系統(alternatives system)。
很多時候我們會將擁有相同或相似功能的不同應用程式安裝在同一個操作系統上,例如同一個操作系統上的不同文本編輯器。這給了這個系統的用戶在編輯文本時有了更多的選擇,如果用戶願意他們可以自由選擇任意一個來使用。
其實update-alternatives命令的功能很好理解,舉個例子:在Window系統中,如果我們安裝多個瀏覽器,比如有火狐、有IE、有360、有Chrome等,當我們從某個鏈接進去打開網頁時,可能會問你使用哪個瀏覽器,當你選擇某個瀏覽器時,此瀏覽器會問你是否把它作為預設瀏覽器,如果你選擇了是,那下次點開某個鏈接時,就直接使用預設瀏覽器打開了!
現在我們在系統中同時安裝了open jdk和sun jdk兩個版本,(由於linux發行版本中預設使用OpenJDK的java命令)而我們又希望系統預設使用的是sun jdk,那怎麼辦呢?通過update-alternatives就可以很方便的實現了。
首先運行以下命令查看java當前的預設配置
update-alternatives --display java,輸出如下(後面有省略):
java - status is manual.
link currently points to /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java - priority 170131
slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/keytool
slave orbd: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/orbd
......可以從輸出中看到系統中java預設使用的OpenJDK,其中數字170131表示優先順序。
2.1 下麵進入正式配置階段
1. 把自己安裝的SunJDK加入到備選系統中
運行命令(註意命令最後的數字表示優先順序,其中170130 為SunJDK的alternative的優先順序)
update-alternatives --install /usr/bin/java java /usr/local/java 170130
2. 選擇自己安裝的SunJDK作為首選java命令
運行命令
update-alternatives --config java,輸出如下
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/local/java
Enter to keep the current selection[+], or type selection number:config命令是互動式的命令,可以根據提示進行選擇,此處我們選擇2,即使用安裝的SunJDK的java命令,然後按回車鍵!
至此,配置完成了!
說明:在配置步驟1中,我們指定SunJDK的優先順序是170130(比當前優先順序170131低),所以需要進行步驟二進行手動選擇;如果我們指定的優先順序比當前優先順序170131高,則步驟二可以省略,系統自動會選擇優先順序高的作為預設alternative!
-