linux使用update-alternatives切换java版本

发布时间 - 2026-01-11 00:52:16    点击率:

linux使用update-alternatives切换java版本

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

https://www./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了。

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


# linux使用update-alternatives切换java版本  # linux切换java版本  # Windows同时安装两个版本JDK并实现动态切换JAVA8或JAVA11的方法  # 关于java中多个JDK和切换版本介绍  # 通过一个命令轻松切换Java的版本  # Java多个版本切换的几种方法  # 都是  # 新安  # 的是  # 我要  # 好了  # 去了  # 让他  # 那就  # 才会  # 一遍  # 希望能  # 要做  # 软件包  # 可以看到  # 还需要  # 要让  # 为例  # 看一下  # 谢谢大家  # 说明了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript读取文本节点方法小结  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  如何快速生成橙子建站落地页链接?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  高端智能建站公司优选:品牌定制与SEO优化一站式服务  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何实现事件和监听器?(Event & Listener实战)  Java类加载基本过程详细介绍  如何快速搭建支持数据库操作的智能建站平台?  如何获取免费开源的自助建站系统源码?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何为不同团队 ID 动态生成多个独立按钮  如何打造高效商业网站?建站目的决定转化率  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何撰写建站申请书?关键要点有哪些?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  如何快速搭建高效可靠的建站解决方案?  Java解压缩zip - 解压缩多个文件或文件夹实例  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Java遍历集合的三种方式  js实现获取鼠标当前的位置  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  JavaScript如何实现路由_前端路由原理是什么  如何在阿里云服务器自主搭建网站?  简历在线制作网站免费版,如何创建个人简历?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何用PHP快速搭建CMS系统?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  如何在服务器上配置二级域名建站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  SQL查询语句优化的实用方法总结  Android Socket接口实现即时通讯实例代码  详解jQuery停止动画——stop()方法的使用  zabbix利用python脚本发送报警邮件的方法  Laravel如何配置Horizon来管理队列?(安装和使用)  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel集合Collection怎么用_Laravel集合常用函数详解  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  javascript基于原型链的继承及call和apply函数用法分析  Laravel怎么上传文件_Laravel图片上传及存储配置