- 系統環境
Env | Disc |
---|---|
Hardware | Laptop Thinkpad T440p |
OS | Ubuntu 20.04 |
- 目的:我們要達成的目標
安裝 Oracle Javase-JDK - 內容: 我們要做什麼
- 從Oracle 官網下載 javase-jdk 目標版本
- 安裝 JDK
- 查看安裝的JDK版本
- 在多個Java versions間切換(包括OpenJDK與OracleJDK之間)
說明:本文介紹的是Oracle 版本的Java JDK的安裝,關於Open JDK的安裝可參考另外篇博文 Ubuntu 20.04 安裝 Java OpenJDK。
下載
從 Oracle 官網下載 javase-jdkXX
https://www.oracle.com/java/technologies/javase-downloads.html
當前下載的是最新版本:jdk-14.0.1_linux-x64_bin.deb
(2020/05/10)
安裝
sudo dpkg -i Downloads/jdk-14.0.1_linux-x64_bin.deb
calm@u20:~$ sudo dpkg -i Downloads/jdk-14.0.1_linux-x64_bin.deb
[sudo] password for calm:
Selecting previously unselected package jdk-14.0.1.
(Reading database ... 194199 files and directories currently installed.)
Preparing to unpack jdk-14.0.1_linux-x64_bin.deb ...
Unpacking jdk-14.0.1 (14.0.1-1) ...
Setting up jdk-14.0.1 (14.0.1-1) ...
calm@u20:~/Downloads$
查看deb包安裝是否ok
calm@u20:~$ sudo dpkg -l | grep jdk-14.0.1
ii jdk-14.0.1 14.0.1-1 amd64 Java Platform Standard Edition Development Kit
其中“ii”表示“installed ok installed”
如果安裝錯了,想刪除可用命令 dpkg -r package-name,即
sudo dpkg -r jdk-14.0.1
, r 表示 remove
程序安裝目錄在 /usr/lib/jvm/jdk-14.0.1
:
calm@u20:~$ tree -L 1 /usr/lib/jvm/
/usr/lib/jvm/
├── java-1.14.0-openjdk-amd64 -> java-14-openjdk-amd64
├── java-14-openjdk-amd64
├── jdk-14.0.1
└── openjdk-14
4 directories, 0 files
說明:帶關鍵字openjdk的目錄是之前安裝過的openjdk,與我們這裏安裝的oracel jdk是有差異的。另外,知道安裝目錄對我們後續的開發需要手動導入java開發環境時是有用的,這裏提一下。
查看 jdk 版本並切換
選對jdk版本對開發很重要,不同版本間存在的差異可能導致軟件運行會出現各種各樣的情況。
- java --version 查看系統當前使用的jdk java版本
calm@u20:~$ java --version
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 14.0.1+7-Ubuntu-1ubuntu1, mixed mode, sharing)
發現當前系統使用的是之前安裝的openjdk版本,(由於後續我要安裝Opengrok,它是Oracle開發的)我需要將系統默認的openjdk改稱現在安裝的(oracle) jdk:
update-alternatives
切換java
和javac
的版本
javac : 即 java代碼的編譯器,生成.class後綴的java字節碼文件;
java : 用來解釋運行 .class文件的解釋器。
切換 java 版本
sudo update-alternatives --display java
sudo update-alternatives --config java
calm@u20:~$ sudo update-alternatives --display java
java - auto mode
link best version is /usr/lib/jvm/java-14-openjdk-amd64/bin/java
link currently points to /usr/lib/jvm/java-14-openjdk-amd64/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-14-openjdk-amd64/bin/java - priority 1411
slave java.1.gz: /usr/lib/jvm/java-14-openjdk-amd64/man/man1/java.1.gz
/usr/lib/jvm/jdk-14.0.1/bin/java - priority 1
calm@u20:~$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-14-openjdk-amd64/bin/java 1411 auto mode
1 /usr/lib/jvm/java-14-openjdk-amd64/bin/java 1411 manual mode
2 /usr/lib/jvm/jdk-14.0.1/bin/java 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jdk-14.0.1/bin/java to provide /usr/bin/java (java) in manual mode
calm@u20:~$ java --version
java 14.0.1 2020-04-14
Java(TM) SE Runtime Environment (build 14.0.1+7)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)
切換 javac 版本
sudo update-alternatives --display javac
sudo update-alternatives --config javac
注意:javac --version 命令在openjdk和(oracle)jdk版本下名字都是顯示 javac version-number
,無法區分,建議使用 sudo update-alternatives --config javac 命令來確認使用的是openjdk還是oracle jdk,避免 java 和 javac 版本不匹配帶來的隱藏問題。