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

图片.png

安装openjdk-8

sudo apt install openjdk-8-jdk

图片.png

安装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

图片.png

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

cd /usr/lib/jvm/ ; ls -al

图片.png

注意看红色箭头指向的三个文件夹,分别是上面安装的openjdk-11、openjdk-8、openjdk-7的安装路径,知道了这三个版本jdk的安装路径。

安装oracle版jdk1.8

为了统一管理和方便查找,我们把oracle1.8的jdk也安装到该目录下,打开oracle-jdk下载官网

java-8-oracle

图片.png

下载相应的jdk版本,我的系统是64位的,所以下载的是Linux x64的。将下载的安装包移动到/usr/lib/jvm/目录下,然后解压

sudo tar -zxvf jdk-8u181-linux-x64.tar.gz

解压后多出来的目录就是oracle版本的jdk安装目录
图片.png

由于是多版本jdk使用所以这里就没必要配置环境变量了。

切换jdk版本

我们执行java -version 这时看到显示的版本是openJdk-11

图片.png

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

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

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

sudo update-alternatives --config java

图片.png

我们看到列出的可配置项中只有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

图片.png

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

java -version

图片.png

已然切换到oracle版本的jdk。

相关链接

Ubuntu18.04 install openjdk-7
update-alternatives命令详解
update-java-alternatives 更改默认Java环境
Ubuntu系统下切换Openjdk7和Openjdk8
ubuntu多版本jdk安装及切换

最后

如有错误之处,欢迎指正

你可能感兴趣的:(Ubuntu18.04配置多版本的JDK)