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安装及切换

最后

如有错误之处,欢迎指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容