Ubuntu18.04配置多版本的JDK
最近新装了Ubuntu18.04, 由于要编译android 源码,所以安装了openJDK-7 (用于编译Android6.0以下版本的源码)、openJDK-8(用于编译Android6.0以上版本的源码)、日常开发中AS用的是Oracle 的java1.8,另外还安装了Ubuntu18.04的默认jdk版本openJDK-11, 这样就有了四个JDK版本,在不同的使用情景下需要来回切换,用来切换jdk版本的命令是update-alternatives
安装openjdk-11
执行命令
sudo apt install openjdk-11-jdk
因为Ubuntu18.04的默认JDK就是openJDK-11,所以也可以执行命令
sudo apt install default-jdk

安装openjdk-8
sudo apt install openjdk-8-jdk

安装openjdk-7
据说Ubuntu18.04已经去除了openJdk-7的源,所以本次进行了下载后手动安装
openjdk-7-jdk
openjdk-7-jre
openjdk-7-jre-headless
libjpeg62-turbo
libfontconfig1
fontconfig-config
下载以上安装包,然后执行命令:
sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
如果在安装过程中报错,则执行以下命令
sudo apt --fix-broken install
下面看一下openJDK-7的安装路径,执行一下命令
dpkg -L openjdk-7-jdk

我们看到openJdk-7的安装路径是/usr/lib/jvm, 进入该目录下查看该目录中的内容
cd /usr/lib/jvm/ ; ls -al

注意看红色箭头指向的三个文件夹,分别是上面安装的openjdk-11、openjdk-8、openjdk-7的安装路径,知道了这三个版本jdk的安装路径。
安装oracle版jdk1.8
为了统一管理和方便查找,我们把oracle1.8的jdk也安装到该目录下,打开oracle-jdk下载官网

下载相应的jdk版本,我的系统是64位的,所以下载的是Linux x64的。将下载的安装包移动到/usr/lib/jvm/目录下,然后解压
解压后多出来的目录就是oracle版本的jdk安装目录sudo tar -zxvf jdk-8u181-linux-x64.tar.gz

由于是多版本jdk使用所以这里就没必要配置环境变量了。
切换jdk版本
我们执行java -version 这时看到显示的版本是openJdk-11

那我们就要思考一下了,刚刚明明装了好几个版本的jdk,为什么现在获取的是11,不是7或者8呢。那就找一下,java命令是怎么设置的,最终在/usr/bin路径下找到java命令,

我们看,这个文件不是一个普通的文件,而是一个链接,指向的是/etc/alternatives/路径下的java 文件,再查看/etc/alternatives/java文件,发现也是个链接

在看该链接的指向,是不是有点熟悉了,对,就是我们上面提到的jdk的安装目录下的可执行文件。终于找到真正的主角了。到这里我们就明白了,原来是靠着链接文件来指向某一个版本的可执行文件来实现多版本配置的。那我们应该怎么改变这个指向呢,这就要用到update-alternatives命令了。关于该命令的详细用法请自行google、baidu 。执行切换版本命令
sudo update-alternatives --config java

我们看到列出的可配置项中只有openjdk相关候选项,没有oracle版本jdk的候选项。是因为Openjdk都是系统安装的,已经自动添加到可配置列表中,而oracle的jdk是手动解压到本地的,需要我们手动添加,那怎么将其增加到可选配置列表中呢,
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_181/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_181/bin/javac 300
注意把jdk1.8.0_181换成你自己的文件夹
然后再次执行 sudo update-alternatives --config java

这回发现可选列表用已经有了oracle版本的jdkle ,然后根据提示输入对应的编号,然后回车确认。
然后在执行
java -version

已然切换到oracle版本的jdk。
相关链接
Ubuntu18.04 install openjdk-7
update-alternatives命令详解
update-java-alternatives 更改默认Java环境
Ubuntu系统下切换Openjdk7和Openjdk8
ubuntu多版本jdk安装及切换
最后
如有错误之处,欢迎指正