linux使用update-alternatives切换java版本

 更新时间:2017年04月27日 14:43:51   投稿:lqh  
这篇文章主要介绍了linux使用update-alternatives切换java版本的相关资料,需要的朋友可以参考下

linux使用update-alternatives切换java版本

关于update-alternatives命令的使用,请见:

https://www.jb51.net/article/112372.htm

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

按照默认的方式,每一个软件包对应的命令都是分别设置的,这样的好处是,可以不同的命令使用不同的版本。如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了。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Django中shell命令的使用

    Django中shell命令的使用

    Django的manage工具提供了shell命令,本文主要介绍了Django中shell命令的使用,方便直接在终端中执行测试python语句,有需要的小伙伴可以参考下
    2021-05-05
  • 详解Linux  Shell 实现一个获取任意位数的随机密码的脚本

    详解Linux Shell 实现一个获取任意位数的随机密码的脚本

    这篇文章主要介绍了详解Linux Shell 实现一个获取任意位数的随机密码的脚本的相关资料,本文提供实现方法及实现代码,需要的朋友可以参考下
    2017-08-08
  • 详解Shell if else语句的具体使用方法

    详解Shell if else语句的具体使用方法

    这篇文章主要介绍了详解Shell if else语句的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • fedora 23 lvm2格式 根目录磁盘空间不足 扩容方法

    fedora 23 lvm2格式 根目录磁盘空间不足 扩容方法

    下面小编就为大家带来一篇fedora 23 lvm2格式 根目录磁盘空间不足 扩容方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • shell脚本实现输入密码显示星号

    shell脚本实现输入密码显示星号

    本文给大家分享使用shell脚本实现输入密码显示星号的脚本写法,在文章末尾给大家补充了shell输入密码时关闭屏幕回显的实现方法,需要的朋友参考下吧
    2017-01-01
  • Shell中通配符的具体使用

    Shell中通配符的具体使用

    本文主要介绍了Shell中通配符的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Shell中set与shopt命令选项的含义和使用示例

    Shell中set与shopt命令选项的含义和使用示例

    这篇文章主要给大家介绍了关于Shell中set与shopt命令选项的含义与使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • Linux中Vi和Vim编辑器用法详解

    Linux中Vi和Vim编辑器用法详解

    本文详细讲解了Linux中Vi和Vim编辑器的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • shell字符串匹配的实现

    shell字符串匹配的实现

    这篇文章主要介绍了shell字符串匹配的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详解Linux下find查找文件命令和grep查找文件命令

    详解Linux下find查找文件命令和grep查找文件命令

    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep,两个命令是有区的,今天通过本文给大家介绍下Linux下查找文件(find、grep命令),感兴趣的朋友一起看看吧
    2022-04-04

最新评论