- 系统环境
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 版本不匹配带来的隐藏问题。