点击打开链接

关于update-alternatives命令的使用,请见: http://blog.csdn.net/54powerman/article/details/54572195

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

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

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

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

sudo update-alternatives --display javacjavac - auto modelink best version is /usr/lib/jvm/java-8-openjdk-amd64/bin/javaclink currently points to /usr/lib/jvm/java-8-openjdk-amd64/bin/javaclink javac is /usr/bin/javacslave javac.1.gz is /usr/share/man/man1/javac.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac - priority 1081
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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

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

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

安装完后,会提示安装到哪里去了,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 3000sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-9-openjdk-amd64/bin/javac 3000sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-9-openjdk-amd64/bin/jar 3000sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java-9-openjdk-amd64/bin/javah 3000sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-9-openjdk-amd64/bin/javap 3000sudo update-alternatives --install /usr/bin/jshell jshell /usr/lib/jvm/java-9-openjdk-amd64/bin/jshell 3000sudo update-alternatives --install /usr/bin/jconsole jconsole /usr/lib/jvm/java-9-openjdk-amd64/bin/jconsole 3000#如果还需要其他命令,自行添加,如:jmap/jps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

接下来,检查一下:

$ sudo update-alternatives --display javac
javac - auto modelink best version is /usr/lib/jvm/java-9-openjdk-amd64/bin/javaclink currently points to /usr/lib/jvm/java-9-openjdk-amd64/bin/javaclink javac is /usr/bin/javacslave javac.1.gz is /usr/share/man/man1/javac.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac - priority 1081slave 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

可以看到生效了。

这有一个前提是,每一个命令都是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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

  1. alternatives java_linux使用update-alternatives切换java版本

    linux使用update-alternatives切换java版本 关于update-alternatives命令的使用,请见: 之前的文章说明了使用文件夹管理来代替原来的当个命令配置的方式,不过这 ...

  2. linux mint python3.6,Linux 上如何安装并切换最新版本的 Python 3.6

    原标题:Linux 上如何安装并切换最新版本的 Python 3.6 如果你安装了 Linux 系统,正在学习 Python 并想要使用最新的版本的话,那么这篇文章就是为你而写的. -- Shekin ...

  3. 安装了多个java 如何切换java版本

    安装了多个java 如何切换java版本 问题描述 平常用的是java8,最近在学习java的新特性.这就需要从java8往更高的java版本切换.由于还在使用java8,测试完新特性后我需要再切换回 ...

  4. 当前服务器系统内核版本是多少,linux下如何查看系统和内核版本

    linux下如何查看系统和内核版本 (2011-04-11 17:35:16) 标签: linux version 杂谈 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat ...

  5. ubuntu 切换 java 版本

    由于各个应用所需的 Java 版本都不太一样 所以可以通过切换 Java 版本的命令来实现不同应用所需的版本 sudo update-alternatives --config java java - ...

  6. Linux下JDK1.7升级1.8版本

    Linux下JDK1.7升级1.8版本 下载需要升级的jdk 这里我需要升级的是jdk1.8 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置. 如果你的liunx连接 ...

  7. linux配置usb主从_一种Linux下USB设备主从切换的实现

    龙源期刊网 http://www.qikan.com.cn 一种 Linux 下 USB 设备主从切换的实现 作者:侯景昆 来源:<电子技术与软件工程> 2013 年第 22 期 摘 要 ...

  8. linux下源码编译升级ssh版本,ssh打补丁过程

    linux下源码编译升级ssh版本过程 记录打补丁之ssh源码编译升级过程 安装前软件准备 升级步骤 结尾及一些坑 记录打补丁之ssh源码编译升级过程 应安全报告要求需要修复操作系统中的ssh协议,原 ...

  9. 「BUAA OO Pre」 切换Java版本到OO课程要求版本

    「BUAA OO Pre」 切换Java版本到OO课程要求版本 文章目录 「BUAA OO Pre」 切换Java版本到OO课程要求版本 Part 0 前言 写作背景 定位 笔者设备 您可以在这里期望 ...

最新文章

  1. centos7 systemctl 管理 mysql
  2. Mybatis XML文件的异常
  3. Microsoft Visual Studio 2010 Service Pack 1
  4. BetterWMF2021中文版
  5. Swoole之I/O操作
  6. IP地址转化为数字,charindex ,SUBSTRING
  7. linux内核I2C子系统学习(二)
  8. 关于四种语言中substring()方法参数值的解析
  9. 马斯克:全力支持狗狗币主要持有者出售货币 持仓太集中是问题
  10. Atcoder Yahoo Programming Contest 2019 简要题解
  11. 吴恩达机器学习【第四天】多元线性规划模型
  12. Anonymous推荐软件含有恶意***程序
  13. 相位展开(phase unwrapping)
  14. 计算机使用鼠标的课件,鼠标的基本操作ppt课件.ppt
  15. Bootstrap CSS Layout (1) - Breakpoint
  16. 如何使用ANSYS workbench导出最清晰的图的步骤
  17. 有关敬业的一个小故事
  18. php mssql统计表中的主键个数,MSSQL_SQL Server中统计每个表行数的快速方法,我们都知道用聚合函数count()可 - phpStudy...
  19. 软件工程期末复习总结
  20. AndroidStudio:apk exposed beyond app through Intent.getData()

热门文章

  1. 032_使用ArrayDeque模拟栈结构
  2. python学习环境安装_python学习系列----环境的安装
  3. 命名规则标识符 unix_关于全局唯一标识符
  4. matlab绘制频散曲线,Matlab绘制频散曲线程序代码.docx
  5. Could not get unknown property 'ANDROID_BUILD_SDK_VERSION'
  6. Spring Ioc注解式开发中注解的作用
  7. 学计算机科学与技术考研考哪些专业课程,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  8. android 英文帮助文档地址,使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)...
  9. linux检测网卡步骤,linux网卡检测命令
  10. 电脑网络安全_电脑网络:计算机网络安全,从入门到入狱