文档章节

linux下使用update-alternatives切换java版本的正确姿势

polly
 polly
发布于 2017/04/27 10:34
字数 765
阅读 377
收藏 18

关于update-alternatives命令的使用,请见:https://my.oschina.net/polly/blog/825345

之前的文章说明了使用文件夹管理来代替原来的当个命令配置的方式,不过这个是属于个人使用的方式,并不是规范的通用的方式。

按照默认的方式,每一个软件包对应的命令都是分别设置的,这样的好处是,可以不同的命令使用不同的版本。如java使用1.9,javap使用1.8

还是以java为例,它默认配置了"java/javac/appletviewer/jconsole"。

在新安装了一个版本的时候,为了保留旧的版本,而让新版本生效,首先要做的是看一下旧版本的优先级是多少,如:

sudo update-alternatives --display javac

javac - auto mode
  link best version is /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
  link currently points to /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
  link javac is /usr/bin/javac
  slave javac.1.gz is /usr/share/man/man1/javac.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac - priority 1081

这里我们看到目前的java版本是java-8,其优先级是1081。

那么我要们安装java-9,而让他自动生效,那么我们就要让他的优先级大于1081,如设置为3000。

明确了这个前提,那就开始安装java-9。

sudo apt-get install -yqq openjdk-9-jdk

安装完后,会提示安装到哪里去了,ubuntu默认是:"/usr/lib/jvm/java-9-openjdk-amd64"

那么,我测试时发现安装程序只设置了appletviewer和jconsole,没关系我并不关心这个,下面自己自己设置要使用的命令和优先级:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-9-openjdk-amd64/bin/java 3000

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 3000

sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-9-openjdk-amd64/bin/jar 3000

sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java-9-openjdk-amd64/bin/javah 3000

sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-9-openjdk-amd64/bin/javap 3000

sudo update-alternatives --install /usr/bin/jshell jshell /usr/lib/jvm/java-9-openjdk-amd64/bin/jshell 3000

sudo update-alternatives --install /usr/bin/jconsole jconsole /usr/lib/jvm/java-9-openjdk-amd64/bin/jconsole 3000

#如果还需要其他命令,自行添加,如:jmap/jps

接下来,检查一下:

$ sudo update-alternatives --display javac
javac - auto mode
  link best version is /usr/lib/jvm/java-9-openjdk-amd64/bin/javac
  link currently points to /usr/lib/jvm/java-9-openjdk-amd64/bin/javac
  link javac is /usr/bin/javac
  slave javac.1.gz is /usr/share/man/man1/javac.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac - priority 1081
  slave javac.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/man/man1/javac.1.gz
/usr/lib/jvm/java-9-openjdk-amd64/bin/javac - priority 3000

$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)

可以看到生效了。

这有一个前提是,每一个命令都是auto 模式,这样才会自动选择优先级高的。为了确保,可以不用管现在的状态,直接设置一遍这些命令为auto模式。

sudo update-alternatives --auto java
sudo update-alternatives --auto javac
sudo update-alternatives --auto javap
sudo update-alternatives --auto javah
sudo update-alternatives --auto jconsole
sudo update-alternatives --auto jshell

好了,可以自由的使用java-9了。

© 著作权归作者所有

polly

polly

粉丝 164
博文 68
码字总数 76845
作品 0
海淀
架构师
私信 提问
ubuntu12.04 64位安装java6

安装JDK1.6.0(下载编译2.3及更高版本,低版本请用jdk1.5) 下载jdk安装文件:jdk-6u45-linux-x64.bin 下载地址:http://yunpan.cn/QUduAGziC6Snw 将下载到的jdk-6u45-linux-x64.bin移动到/...

卡西卡
2013/11/23
765
0
[RK3399][Android7.1] 调试笔记 --- java和javac版本不一致问题及修改

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/89377326 Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 当前版本: build@bui...

KrisFei
04/18
0
0
Ubuntu下JAVA环境搭建(JDK1.7安装)

最近工作环境切换到了Ubuntu12,分享下安装JAVA环境步骤。 1、到JAVA官网下载jdk-7u51-linux-i586.tar.gz,选择适合自己机型的JDK下载。 2、解压文件,修改文件名: $ sudo mkdir /usr/lib/...

D-L
2014/04/22
2.1K
0
Ubuntu 10.10 下安装配置 JDK7

第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz (注:如果下载不下来,建议使用迅雷下载,然后拷贝到Linux系统上。)...

伪码农eric
2012/06/05
77
0
Ubuntu 13.10 64位下安装配置 JDK 7

第一步:下载 jdk-7u45-linux-x64.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz 或者直接下载:http://download.oracle.com/otn-pub/ja......

姚君
2014/03/24
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

db.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.pas......

行者终成事
27分钟前
3
0
从 Storm 到 Flink,汽车之家基于 Flink 的实时 SQL 平台设计思路与实践

在 2019 年之前,之家的大部分实时业务都是运行在 Storm 之上的。Storm 作为早期主流的实时计算引擎,凭借简单的 Spout 和 Bolt 编程模型以及集群本身的稳定性,俘获了大批用户。下图是实时计...

阿里云官方博客
28分钟前
4
0
网络安全-Day04

2.1.1 什么是SQL注入 2.1.2 注入分类 2.1.3 MySQL手工注入 2.1.4 sqlmap使用 2.1.5 总结 什么是SQL注入 SQL注入漏洞原理 什么是SQL 结构化查询语言(Structured Query Language),是一种特殊目...

Jerry1101
28分钟前
3
0
docker容器内安装yum,vim等命令,以及配置ls指令

使用国内镜像 mv /etc/apt/sources.list /etc/apt/sources.list.bakecho "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.listecho "deb http://......

长恭
28分钟前
3
0
超详细的MySQL8.0.17版本安装教程

下载MySQL MySQL的官网地址:https://www.mysql.com/。 如下图所示: 然后点击DOWNLOADS ==> Community,选择MySQL Community Server。如图所示: 滑到页面的最下面,找到Recommended Downl...

彩色泡泡糖
32分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部