ubuntu系統中java -version所顯示的版本與/etc/profile中配置的$JAVA_HOME的關係

王明輝發表於2019-02-22

問題產生

ubuntu 18.04環境下,執行

java -version

發現與/etc/profile中的$JAVA_HOME所設定的java版本不同。

 

推測原因

最近用apt install 安裝過ubuntu自帶的eclipse,有可能是把一些配置覆蓋了。

 

可能的解決方案

方案一

sudo gedit ~/.profile

在末尾加上:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21

然後儲存關閉,使用source更新下
$ source ~/.profile

使用env命令察看JAVA_HOME的值
$ env
如果JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21,說明配置成功。

此前我並沒有配置這個檔案,我配置的是全域性的/ect/profile,java -version也是生效的。暫時忽略。

方案二

據說java -version只顯示環境變數中的PATH所指向的第一個含有java執行檔案的版本。

開啟我的環境變數

vim /etc/environment

內容如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

並沒有我設定的java路徑,/usr/bin,這個,是自動安裝的openjdk的java執行檔案路徑,所以當前的版本顯示的是它。

在前面強行插入我的java路徑“/opt/jdk1.8.0_201/bin:/opt/jdk1.8.0_201/jre/bin:”,儲存

source /etc/enviroment

source 生效。這時再用

java -version

就能夠看到我設定的java的版本了。

java version "1.8.0_201"

這種方案能夠正常顯示版本,但能否正常編譯,我無法再測試,因為看到了方案三,並在嘗試方案三的時候,不知道怎樣退回。留作一個研究課題。

方案三

修改系統預設jdk

此方案來自http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.html

# 安裝新版本的jdk
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_21/bin/java 300 
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_21/bin/javac 300 

 

執行了上面的兩條命令,系統中就有了兩個版本的java,下面兩條命令,是設定系統預設使用哪個java

$ sudo update-alternatives --config java 
$ sudo update-alternatives --config javac


 

輸入前面的數字就可以設定預設的java版本。

再次執行java -version

就可以得到自定義的java版本了。

 

但是,這些設定是寫在哪裡的?就是說執行了update-alternatives以後,哪個檔案被修改了?怎樣退回去?有待研究。

 

相關文章