首页 > 系统相关 >Linux安装管理多版本JDK

Linux安装管理多版本JDK

时间:2024-09-13 16:50:42浏览次数:7  
标签:bin java JDK -- alternatives update 版本 Linux

目录

前言

在之前鄙人还是学生的时候,很老实的作为钉子户坚守 JDK8,但在后续学有小成之后,逐渐的开始尝试不同版本的 JDK,比如 11、17、21 以及未来可期的 24()。因此为了避免频繁的手动修改 Linux 的配置文件,便开始着手在海洋的知识里面找到了下面能让我偷懒的管理方式。

省流:使用 update-alternatives 命令进行管理,但对于要部署不同版本项目的需求人群来说,使用 Docker 做环境隔离相信会更合适

1、JDK下载&安装

对于下载安装相信各位在座的靓仔靓女都是会的,主流的方式多数为使用 yum instal等下载命令进行一键式安装下载,还有一种就是去官网下载对应的安装包自行解压安装。

通过深思熟虑之后,根据我的个人偏好(我安装的软件我做主)以及使用 update-alternatives命令管理(安装过程中不需要编写系统配置文件)等诸多原因,我选择第二种自行解压安装。

这里贴上解压命令,当然了也是为了鄙人我后续方便 CV,对于版本不做推荐,哪个顺眼用哪个:

cd /home/java
tar -zxvf jdk-11.0.18_linux-x64_bin.tar.gz
tar -zxvf jdk-8u351-linux-x64.tar.gz

2、配置版本管理

update-alternatives 命令是 Linux 系统中用于管理软件版本切换的工具,尤其适用于处理多个版本的软件共存的情况。该命令允许系统管理员或用户选择系统默认使用的软件版本,通过维护符号链接来实现不同版本之间的切换。

以上介绍来自于 AI 大聪明的回答,毕竟咱也是第一次遇到这命令

在自己的控制台中使用 update-alternatives --help 命令即可查看到对应的命令说明:

[root@localhost java]# update-alternatives --help
alternatives(备用)版本 1.7.6 - 版权 (C) 2001 红帽公司
在 GNU 公共许可条款下,本软件可被自由地重发行。

用法:update-alternatives --install <链接> <名称> <路径> <优先度>
                    [--initscript <服务>]
                    [--family <family>]
                    [--slave <链接> <名称> <路径>]*
       update-alternatives --remove <名称> <路径>
       update-alternatives --auto <名称>
       update-alternatives --config <名称>
       update-alternatives --display <名称>
       update-alternatives --set <名称> <路径>
       update-alternatives --list

common options: --verbose --test --help --usage --version --keep-missing
                --altdir <目录> --admindir <目录>

在配置之前最好查看一下自己使用的系统是否有对应的软链存在,如果存在可进行移除(后续追加应该也是可以的)

# 查看是否存在
update-alternatives --config java

# 如果存在查询结果如下
共有 2 个提供“java”的程序。

  选项    命令
-----------------------------------------------
 + 1           /home/java/jdk1.8.0_351/bin/java
*  2           /home/java/jdk-11.0.18/bin/java

# 逐一移除,下面的“命令地址”为上面查询出来的路径,如/home/java/jdk1.8.0_351/bin/java
update-alternatives --remove java 命令地址

# 删除完成后,查询判断是否还有存在
update-alternatives --config java

这个时候就可以愉快的进行配置多个版本的 JDK 咯,此处使用过的命令为 update-alternatives --install <链接> <名称> <路径> <优先度>,其中:

  • <链接> 是指向 /etc/alternatives/<名称> 的符号链接,如 /usr/bin/java
  • <名称> 是该链接替换组的主控名,如 java
  • <路径> 是候选项目标文件的位置,如 /home/java/jdk1.8.0_351/bin/java
  • <优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高
# 注意将 /home/java/jdk1.8.0_351/bin/java 修改成你服务器中 jdk 的路径
update-alternatives --install /usr/bin/java java /home/java/jdk1.8.0_351/bin/java 1
# 注意将 /home/java/jdk-11.0.18/bin/java 修改成你服务器中 jdk 的路径
update-alternatives --install /usr/bin/java java /home/java/jdk-11.0.18/bin/java 2

此时不出意外的话,使用 java -version命令后你应该可以看得到 jdk11 版本号的输出了,这是因为它的优先级是 2。

[root@localhost java]# java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)

当我们希望切换到其他版本时也很简单,使用 JDK8 为例:

# 使用方式命令的厂商已经教大家伙了
[root@localhost java]# update-alternatives --config java

共有 2 个提供“java”的程序。

  选项    命令
-----------------------------------------------
   1           /home/java/jdk1.8.0_351/bin/java
*+ 2           /home/java/jdk-11.0.18/bin/java

按 Enter 保留当前选项[+],或者键入选项编号:1

# 验证是否切换成功
[root@localhost java]# java -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

3、没遇到的坑

在查询管理版本的相关方法时,有看到过其它博主使用官网二进制安装包的方式无法成功切换版本,即设置不生效,但在我这边貌似没这个问题,嘎嘎顺畅,可能是因为我这个时新系统的问题,也有可能其他博主在他们的系统中操作了一些软链或配置导致 update-alternatives 命令无法正确设置,目前来看比较简单的解决方式就是使用 yum install 等安装命令进行一键安装 JDK。

同时相信大家伙都知道,这种方式配置的是全局的环境配置,对于玩耍或者学习的需求场景下更适合。如果希望在 Linux 系统中部署不同 JDK 版本的项目,相信手动指定 JDK 的路径或使用 Docker 进行环境隔离等方案更能够满足你们的需求。

搞定,猿神,启动!

4、参考资料

标签:bin,java,JDK,--,alternatives,update,版本,Linux
From: https://www.cnblogs.com/debugfish/p/18412456

相关文章

  • Thinkpad C13 Yoga Linux声卡驱动问题解决方案等
    ChromebookMorphius:ThinkpadC13Yoga与linux这本子做工真不错,全铝触摸屏,360翻折,还有usi笔槽。续航也很长,能连续用8个小时。安装linuxcoolstar.org,请。如果运行那个脚本有困难(网络问题),你可以尝试打开那个脚本看看biosrom是从哪里下载的。手动下载后用脚本里的flashrom那......
  • USB总线-Linux内核USB3.0设备控制器中断处理程序分析(九)
    1.概述USB设备枚举、请求处理、数据交互都涉及USB设备控制器中断。当有事件发生时,USB设备控制器首先将事件信息通过DMA写入到事件缓冲区中,然后向CPU发出中断,随后CPU调用中断处理函数开始处理中断事件。2.事件dwc3USB设备控制器事件使用dwc3_event数据结构描述,由4个字节组成。......
  • linux 下的解压
    1.要解压缩zip文件,可以使用以下命令:unzipfile.zip122.要解压缩tar文件,可以使用以下命令:tar-xvffile.tar13.要解压缩tar.gz文件,可以使用以下命令:tar-xzvffile.tar.gz14.要解压缩tar.bz2文件,可以使用以下命令:tar-xjvffile.tar.bz215.要解压缩tar.Z文件,可以使用以......
  • 用命令检查自己电脑安装了哪些版本的python
    用命令检查自己电脑安装了哪些版本的pythonWindows:打开命令提示符(CommandPrompt)。输入以下命令:wherepython这将显示Python的安装路径,如果有多个版本,都会列出。你还可以使用py命令来查看所有已安装的Python版本:py-0这将列出所有可用的Python版本和......
  • 面试-JS Web API-Linux命令
    关键Linux命令虽然前端开发者不需要掌握Linux的所有命令,但以下基本的命令对日常工作是非常有用的:文件和目录管理ls:列出当前目录下的文件和文件夹。lsls-l#显示详细信息ls-a#显示隐藏文件cd:切换目录。cd/path/to/directorycd..#返回上一级目录pwd:显......
  • 在Linux中如何查看进程的执行情况?
    Linux是一个多任务的操作系统,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业。那么Linux如何查看进程执行情况?在Linux中,可以使用多种命令来查看进程的执行情况,接下来是具体内容介绍。在Linux系统中,有多种工具可以用来查看正在运行的进程及其执行情况......
  • Linux字符设备驱动:分层/分离思想、总线设备驱动模型和设备树
    本文章参考韦东山嵌入式Linux应用开发完全手册......
  • nvm下载node版本Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt.
    1.使用nvm安装node版本的时候报错Couldnotretrievehttps://nodejs.org/dist/latest/SHASUMS256.txt.Get"https://nodejs.org/dist/latest/SHASUMS256.txt":dialtcp104.20.22.46:443:i/otimeout原因:可能是远程连接被关闭的问题,这是由于国内网络限制导致的,解决办法:找到sett......
  • Linux systemd服务
    Linuxsystemd服务systemctl命令systemctl是systemd的主命令,用于管理系统和服务。以下是一些常用的systemctl命令:查看服务状态:systemctlstatus服务名启动服务:systemctlstart服务名停止服务:systemctlstop服务名重启服务:systemctlrestart服务名设置开机自启动:system......
  • swiper6版本下滚轮失效&分页失效等的问题
    swiper6中一些配置会失效原因是控件需要单独引入 如我这次用的swiper相关版本是: [email protected]@4.1.1 在滚轮切换、分页、左右切换和动效配置中,都需要单独引入控件 import{Swiper,SwiperSlide}from"vue-awesome-swiper";importSw......