天天看點

openjdk替換java_如何将linux系統的openjdk替換為自己安裝的sunjdk

好久不用linux,今天裝個jdk,被個open卡了2個小時,翻箱倒櫃終于解決了。解決方式如下。

思路:

openjdk是系統自帶的。sunjdk是系統安裝的(安裝路徑自己一定要記得,我的安裝路徑一般是/usr/java)。

先把sunjdk裝好,

找到linux預設jdk的檔案,将其指向為自己的sunjdk。

具體辦法:

不急,先運作whereis java,輸出如下:

java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java

/usr/java/jdk1.7.0_80/bin/java

在幾個地方有java指令,其中/usr/java/jdk1.7.0_80/bin/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指令,也即/opt/java/bin/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

......(此處省略1萬字)

可以從輸出中看到系統中java預設使用的OpenJDK,其中數字170131表示優先級。

2.1 下面進入正式配置階段

1. 把自己安裝的SunJDK加入到備選系統中

運作指令(注意指令最後的數字表示優先級,其中170130 為SunJDK的alternative的優先級)

update-alternatives --install /usr/bin/java java

/usr/java/jdk1.7.0_80/bin/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 /opt/java/bin/java

Enter to keep the current selection[+], or type selection

number:

config指令是互動式的指令,可以根據提示進行選擇,此處我們選擇2,即使用安裝的SunJDK的java指令,然後按Enter鍵!

至此,配置完成了!

說明:在配置步驟1中,我們指定SunJDK的優先級是170130(比目前優先級170131低),是以需要進行步驟二進行手動選擇;如果我們指定的優先級比目前優先級170131高,則步驟二可以省略,系統自動會選擇優先級高的作為預設alternative!

---------------------

作者:rj042

原文:https://blog.csdn.net/rj042/article/details/72034650