linux安装java_linux中替换系统自带的OpenJDK
OpenJDK和SUN JDK的區別:
- 授權協議的不同:OpenJDK采用GPL V2協議放出,而SUN JDK則采用JRL放出。兩者協議雖然都是開放源代碼的,但是在使用上的不同在于GPL V2允許在商業上使用,而JRL只允許個人研究使用。
- OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在OpenJDK中是找不到的。
- 下載jdk:
鏈接: https://pan.baidu.com/s/11glwWBHSf_Hd6LRhyfIMXw 密碼: 9tcr
然后進入下載目錄:
sudo mkdir /usr/lib/jdk sudo tar -zxvf jdk-8u60-linux-x64.tar.gz -C /usr/lib/jdk //-C代表change目錄的意思,本例中指定解壓文件到/usr/lib/jdk這個目錄下- 配置環境變量
文件的末尾追加下面內容:
#set oracle jdk environment export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_60 ## 這里要注意目錄要換成自己解壓的jdk 目錄 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH- 使環境變量馬上生效
然后驗證:
可以發生錯誤感謝:https://zhuanlan.zhihu.com/p/27892768
- 若不成功(設置系統默認JDK):
然后執行:
sudo update-alternatives --config java測試:
java -version javac -version解釋:
javac命令用與編譯java源碼文件,其語法格式如下: javac [ options ] [ sourcefiles ] [ @files ] 參數可按任意次序排列 options 命令行選項 sourcefiles 一個或多個要編譯的源文件(例如 MyClass.java) @files 一個或多個對源文件進行列表的文件linux增加環境變量的方法:
方法一:
在/etc/profile文件中添加變量【對所有用戶生效(永久的)】用vim在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,并且是“永久的”。要讓剛才的修改馬上生效,需要執行以下代碼# source /etc/profile方法二:
在用戶目錄下的.bash_profile文件中增加變量【對單一用戶生效(永久的)】用vim在用戶目錄下的 .bash_profile文件中增加變量,改變量僅會對當前用戶有效,并且是“永久的”。要讓剛才的修改馬上生效,需要在用戶目錄下執行以下代碼# source .bash_profile下面對上面一些現象作出的解釋,記錄下的的原因是涉及到linux的一些操作,當作熟悉linux了
感謝:https://blog.csdn.net/rj042/article/details/72034650
在linux系統中,由于涉及到版權問題,在大部分linux系統的發行版本中,默認都安裝了OpenJDK,并且OpenJDK的java命令也已經加入到環境變量中了。
在剛裝好的linux系統中,運行java -version,輸出如下(JDK版本不同,輸出的版本可能不同):
但在進行java開發時,我們大多是需要使用Sun(準確的說應該是Oracle)的JDK,所以我們會去Oracle官網下載相應版本的JDK進行安裝。
如何在linux上安裝,在此不在贅述。
在linux上安裝完JDK后,我們會在~/.bash_profile 把安裝的java加入到環境變量中。原以為就萬事大吉了,在運行java程序時會使用自己安裝的JDK。
如果你是這么想的就大錯特錯了,在文章開頭講的,由于linux系統的發行版中默認安裝的時OpenJDK,盡管我們把安裝的SunJDK的java命令也加入到環境變量中,但是我們運行
java -version,輸出確還是和之前一樣。
這要這么破!!!查找原因,不急,先運行
whereis java輸出如下(這是我自己電腦的輸出,和文字不一樣,可以忽略圖):
從圖中在幾個地方都有 java 命令,其中/opt/java/bin/java 是我自己安裝的SunJDK的java命令所在的目錄,而/usr/bin/java是系統中默認安裝的java命令所在的目錄。
原因就在這,執行
ls -la /usr/bin/java輸出如下(這是我自己電腦的輸出,和文字不一樣,可以忽略圖):
這是一個軟連接cd /etc/alternatives到目錄下看個究竟:
然后輸入(這是我自己電腦的輸出,和文字不一樣,可以忽略圖):
ls -la輸出比較多,而且很多軟鏈,其中有一個
java -> /usr/lib/jvm/java-11-openjdk-amd64/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的java命令,那怎么辦呢?通過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 170131slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/keytoolslave orbd: /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/orbd ......可以從輸出中看到系統中java默認使用的OpenJDK,其中數字170131表示優先級。
下面進入正式配置階段
1. 把自己安裝的SunJDK加入到備選系統中
運行命令(注意命令最后的數字表示優先級,其中170130為SunJDK的alternative的優先級)
update-alternatives --install /usr/bin/java java /opt/java/bin/java 1701302. 選擇自己安裝的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/java2 /opt/java/bin/java Enter to keep the current selection[+], or type selection number:config命令是交互式的命令,可以根據提示進行選擇,此處我們選擇2,即使用安裝的SunJDK的java命令,然后按回車鍵!
至此,配置完成了!
說明:在配置步驟1中,我們指定SunJDK的優先級是170130(比當前優先級170131低),所以需要進行步驟二進行手動選擇;如果我們指定的優先級比當前優先級170131高,則步驟二可以省略,系統自動會選擇優先級高的作為默認alternative!
總結
以上是生活随笔為你收集整理的linux安装java_linux中替换系统自带的OpenJDK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试换背景颜色_证件照换底色 证
- 下一篇: linux安装mysql8.0_Linu