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了。

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

相关文章

  • Shell根据日期、月份、星期判断年份的代码

    Shell根据日期、月份、星期判断年份的代码

    这篇文章主要介绍了Shell根据日期、月份、星期判断年份的代码,需要的朋友可以参考下
    2016-12-12
  • 判断Linux Shell环境变量是否存在

    判断Linux Shell环境变量是否存在

    这篇文章主要介绍了Linux Shell 判断环境变量是否存在的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Linux磁盘管理之LVM详解及lvm磁盘操作命令

    Linux磁盘管理之LVM详解及lvm磁盘操作命令

    LVM,Logical Volume Manger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备,这篇文章主要介绍了Linux磁盘管理之LVM详解及lvm磁盘操作命令,需要的朋友可以参考下
    2023-03-03
  • 利用shell获取指定日期前N天的日期

    利用shell获取指定日期前N天的日期

    最近因为项目的需要对比2015年10月的数据,因为一年来的数据经过了很多次调整和处理,遇到的最直接的问题是很多数据需要重新计算。只好写脚本刷数据。在准备脚本的过程中,就需要根据给定的日期处理数据,所以就有了这篇文章,下面有需要的朋友们一起学习学习。
    2016-11-11
  • shell wait等待命令的具体使用

    shell wait等待命令的具体使用

    本文主要介绍了shell wait等待命令的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • linux bash shell中case语句的实例

    linux bash shell中case语句的实例

    本文介绍下,在bash shell编程中,有关case语句的一个例子,学习下case语句的用法,有需要的朋友参考下
    2013-11-11
  • linux踢出远程登录用户命令(总结篇)

    linux踢出远程登录用户命令(总结篇)

    本文给大家总结了linux踢出远程登录用户命令,通过linux命令介绍了 tty 踢出登录的操作方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-01-01
  • Shell脚本实现的基于SVN的代码提交量统计工具

    Shell脚本实现的基于SVN的代码提交量统计工具

    这篇文章主要介绍了Shell脚本实现的基于SVN的代码提交量统计工具,本文直接给出实现脚本代码,需要的朋友可以参考下
    2015-06-06
  • Linux下find和grep常用命令及区别介绍

    Linux下find和grep常用命令及区别介绍

    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep,这两个命令还是有区别的,下面通过本文给大家讲解Linux下find和grep常用命令及区别介绍,需要的的朋友参考下吧
    2017-07-07
  • 十三个写好shell脚本的技巧分享

    十三个写好shell脚本的技巧分享

    这篇文章主要给大家介绍了关于写好shell脚本的13个技巧的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06

最新评论