Java升级那么快,多个版本如何灵活切换和管理?

雪夜
发布: 2025-08-28 10:06:12
原创
993人浏览过

引言

近年来,Java 版本更新频繁,刚适应 Java 8,就已经传来了 Java 14 的消息。无论是为体验新特性(Java 12 中有非常实用的功能),还是因为项目升级或兼容需求,我们都可能需要管理多个 Java 版本。

配置单个 Java 环境变量并不复杂,但当需要管理多个 Java 版本时,反复配置环境变量显得非常繁琐,传统配置方式也无法灵活切换 Java 版本。

那么,如何轻松管理和使用多个版本的 Java 呢?

显然,我们并非首次面对这种困境。目前已知有三种解决方案:

立即学习Java免费学习笔记(深入)”;

Jabba(https://www.php.cn/link/f816fdcb111b79750431ce758e283ead sdkman(https://www.php.cn/link/0ff0a77035f9569943049ed3e980bb0d sdkman 解决我们面临的问题,帮助我们灵活配置和使用 Java。

sdkman 介绍

SDKMAN 是一个用于在大多数基于 Unix 的系统上管理多个软件开发工具包(Java、Groovy、Scala、Kotlin 和 Ceylon,Ant、Gradle 等)的并行版本的工具。

它提供了一个便捷的命令行界面(CLI)和 API,用于安装、切换、删除和列出候选对象。本文将主要通过管理 Java 来展示 sdkman 的使用。

sdkman 安装

在类 Unix 平台上安装 sdkman 非常简单。它可以顺利安装在 Mac OSX、Linux、WLS、Cygwin、Solaris 和 FreeBSD 上,同时支持 Bash 和 ZSH shell。

只需打开一个新终端并输入:

$ curl -s "https://get.sdkman.io" | bash
登录后复制

按照相应的指令提示,完成操作后继续输入:

$ source "$HOME/.sdkman/bin/sdkman-init.sh"
登录后复制

至此,我们可以验证 sdkman 的安装版本:

$ sdk version
登录后复制

Java升级那么快,多个版本如何灵活切换和管理?

上图中红色框标记显示了我当前的 sdkman 版本。每执行

sdk version
登录后复制
命令时,都会检查是否有新版本,如果需要更新,只需输入
y
登录后复制
即可。

有些系统发行版本不包含

zip
登录后复制
unzip
登录后复制
,如果安装时遇到相关错误,可以输入如下命令安装
zip
登录后复制
unzip
登录后复制

$ sudo apt-get install zip unzip
登录后复制

从上面的安装命令可以看出,sdkman 默认的安装路径在

$HOME/.sdkman
登录后复制
下,我们也可以自定义安装路径,只需指定
SDKMAN_DIR
登录后复制
变量值即可:

$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
登录后复制

至此,sdkman 的安装就结束了。接下来我们看看如何使用它。

sdkman 使用教程

在命令行下学习新工具当然是从查看帮助命令开始,输入:

$ sdkman help
登录后复制

Java升级那么快,多个版本如何灵活切换和管理?

从上图中可以看出,sdkman 的使用说明已按颜色区分内容。我们将根据上图详细说明使用教程。

sdk list

首先,输入:

$ sdk list
登录后复制

Java升级那么快,多个版本如何灵活切换和管理?

绿色标记显示了 sdkman 集成的所有可用候选对象,按回车键「enter」可以看到更多可用候选对象。

我们指定候选对象,输入:

$ sdk list java
登录后复制

Java升级那么快,多个版本如何灵活切换和管理?

从上图中可以看到所有可用的 Java 版本、标识符以及状态。我已经安装了 Java 12 和 11。

有了这些信息做铺垫,我们可以安装任意 sdkman 内置的软件开发包了,继续以 Java 为例。

sdk install

回顾 sdkman help 命令的输出,使用 install 命令,我们再安装一个最新的 Java

13.0.1.j9
登录后复制
版本。

Java升级那么快,多个版本如何灵活切换和管理?

MarsCode
MarsCode

字节跳动旗下的免费AI编程工具

MarsCode 279
查看详情 MarsCode

从上图可以看出,绿色标记的内容是 list 命令结果中的版本值,但报错不可用,输入

identifier
登录后复制
编号才能正常下载,这里需要注意。

安装完成后,状态会变为 installed。

sdk current

当安装多个版本的 Java 时,我们输入下面命令获取当前正在使用的候选对象版本:

$ sdk current java
登录后复制

Java升级那么快,多个版本如何灵活切换和管理?

sdk use

了解了当前使用版本,如果我们想切换到其他版本,可以输入:

$ sdk use java 12.0.2.j9-adpt
登录后复制

注意⚠️:这里同样是指定的 identifier 的值。

Java升级那么快,多个版本如何灵活切换和管理?

sdk default

如果我们想指定某个版本为默认版本,可以输入:

$ sdk default java jdk1.8.0_162.jdk
登录后复制

注意⚠️:这里同样是指定的 identifier 的值。

Java升级那么快,多个版本如何灵活切换和管理?

sdk uninstall

当我们想卸载某个版本时,可以输入:

$ sdk uninstall java 12.0.2.j9-adpt
登录后复制

注意⚠️:这里同样是指定的 identifier 的值。

sdk upgrade

如果我们想升级某个候选对象,可以输入:

$ sdk upgrade java
登录后复制

sdk flush

使用 sdkman 时间变长也会慢慢产生很多缓存内容,我们可以输入清理广播消息:

$ sdk flush broadcast
登录后复制

清理下载的 sdk 二进制文件(长时间使用后清理,可以节省出很多空间):

$ sdk flush archives
登录后复制

清理临时文件内容:

$ sdk flush temp
登录后复制

至此,sdkman 的基本使用就已经介绍完了。其实这些命令都不用急,想不起来的时候执行

sdk help
登录后复制
来临时查看一下就好。

sdkman 卸载

如果我们不喜欢 sdkman 了,我们也可以轻松地卸载它:

$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman
登录后复制

最后,打开你的 .bashrc、.bash_profile 和/或 .profile,找到并删除下面这几行。

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"
登录后复制

我使用的是 zshrc,找到 .zshrc 文件删除上面内容即可。

至此,基于 Unix 系统的,有关 sdkman 的安装、使用及卸载都已经介绍完了,可以上手试一试了。相信很多小伙伴用的是 Windows,除了 jenv,sdkman 和 Jabba 都有 Windows 用户的解决方案:

sdkman Windows 解决方案

在 sdkman 官网首页同样为 Windows 用户提供了解决方案,小伙伴们找到如下位置查看即可。

Java升级那么快,多个版本如何灵活切换和管理?

我看了一下过程,也很简单,由于手头没有 Windows 电脑,这个请小伙伴们自行尝试,有问题欢迎留言。

以上就是Java升级那么快,多个版本如何灵活切换和管理?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号