【JAVA开发】—— 使用SDK管理Ubuntu的jdk

Ubuntu系统使用SDKMAN! 高效管理Java版本(附JDK 21安装实操)

作为Java开发者,在Ubuntu系统中难免会遇到"多个项目需要不同Java版本"的问题------手动安装、配置环境变量、切换版本,步骤繁琐还容易出错。今天给大家推荐一款新手友好、高效便捷的Java版本管理工具------SDKMAN!,不仅能一键安装JDK(以主流的JDK 21为例),还能轻松实现多版本切换、卸载,全程无需sudo权限,彻底解放双手。

一、为什么选择SDKMAN! ?

在介绍安装步骤前,先说说SDKMAN! 的核心优势,尤其是针对Ubuntu用户:

  • ✅ 免管理员权限:用户级安装,无需sudo,不会修改系统核心配置,安全无风险;

  • ✅ 一键操作:安装、切换、卸载JDK(及Maven、Gradle等工具),全程单条命令搞定;

  • ✅ 版本齐全:支持多种JDK发行版(Temurin、OpenJDK、Oracle JDK等),涵盖从Java 8到Java 21+的所有主流版本;

  • ✅ 自动配置环境:安装JDK后无需手动修改/etc/profile或.bashrc,自动配置JAVA_HOME、PATH等环境变量;

  • ✅ 跨项目适配:可临时切换JDK版本(仅当前终端生效),也可设置默认版本(全局生效),适配不同项目需求。

二、Ubuntu安装SDKMAN! (步骤极简)

SDKMAN! 仅支持Unix-like系统(Ubuntu、CentOS、macOS等),Ubuntu下安装全程3步,新手也能轻松跟上。

步骤1:安装SDKMAN! 依赖

SDKMAN! 依赖curl(下载工具)和unzip/zip(解压工具),Ubuntu默认可能未安装,执行以下命令一键安装依赖:

bash 复制代码
sudo apt update && sudo apt install curl unzip zip -y

提示:输入系统密码时无回显,正常输入即可,输完回车确认。

步骤2:下载并安装SDKMAN!

执行官方提供的安装脚本(无安全风险,可放心执行,脚本会自动下载并配置SDKMAN!):

bash 复制代码
curl -s "https://get.sdkman.io" | bash

安装过程中会提示"是否同意许可证",直接按回车确认即可,全程自动完成,无需手动干预。

步骤3:使SDKMAN! 立即生效

安装完成后,需要加载SDKMAN! 的环境变量,无需重启终端,执行以下命令即可:

bash 复制代码
source "$HOME/.sdkman/bin/sdkman-init.sh"

步骤4:验证SDKMAN! 是否安装成功

执行版本查看命令,只要输出版本号,就说明安装成功(版本号可能不同,不报错即可):

bash 复制代码
sdk version

示例输出(正常情况):

bash 复制代码
SDKMAN! 5.18.2
copyright (C) 2024 SDKMAN! open source project
maintainer: Marco Vermeulen (marco@dkane.net)
home: https://sdkman.io

三、用SDKMAN! 一键安装JDK 21(主流稳定版)

推荐安装Eclipse Temurin JDK 21(Adoptium出品,开源免费、稳定兼容,也是目前企业级开发的主流选择),全程无需手动配置环境。

步骤1:(可选)查看可安装的JDK 21版本

如果想确认当前可用的JDK 21发行版和具体版本号,执行以下命令(过滤出21相关版本,避免信息过多):

bash 复制代码
sdk list java | grep -i 21

输出中会显示所有21.x版本的JDK,比如21.0.3-tem(tem即Temurin发行版)、21.0.3-open(OpenJDK发行版)等。

步骤2:安装JDK 21(Temurin稳定版)

执行以下命令,一键安装Temurin JDK 21(版本号可根据上一步的输出替换为最新版):

bash 复制代码
sdk install java 21.0.3-tem

关键提示(新手必看)

  • 安装过程中会自动下载JDK安装包,速度取决于网络,耐心等待即可;

  • 下载完成后,会提示"是否将此版本设为默认JDK?(Y/n)",输入y并回车,后续所有终端都会默认使用JDK 21;

  • 如果不小心输了n,后续也能通过命令设置默认版本(下文会讲)。

步骤3:验证JDK 21是否安装成功

安装完成后,执行以下两个命令,验证Java运行环境和编译器是否正常:

bash 复制代码
# 查看Java运行版本
java -version

# 查看Java编译器版本
javac -version

正常输出(示例):

bash 复制代码
openjdk version "21.0.3" 2024-04-16 LTS
OpenJDK Runtime Environment Temurin-21.0.3+9 (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.3+9 (build 21.0.3+9-LTS, mixed mode, sharing)
javac 21.0.3

只要输出的版本号是21.x,就说明JDK 21安装成功,且环境变量已自动配置完成。

四、SDKMAN! 后续版本管理(核心常用命令)

安装完SDKMAN! 和JDK 21后,后续的版本切换、卸载、查看等操作,都能通过简单命令实现,整理了最常用的5个命令,直接复制使用即可。

1. 查看已安装的所有JDK版本

查看当前系统中通过SDKMAN! 安装的所有JDK,带*的是当前默认版本:

bash 复制代码
sdk list java

2. 切换JDK版本(临时生效)

仅在当前终端生效,关闭终端后恢复默认版本,适合临时切换版本测试项目:

bash 复制代码
# 格式:sdk use java 版本号
# 示例:切换到JDK 21(替换为自己的版本号)
sdk use java 21.0.3-tem

3. 设置默认JDK版本(永久生效)

设置后,所有终端都会使用该版本作为默认JDK,适合长期使用某个版本:

bash 复制代码
# 格式:sdk default java 版本号
# 示例:设置JDK 21为默认版本
sdk default java 21.0.3-tem

4. 卸载不需要的JDK版本

如果某个JDK版本不再使用,一键卸载,不会残留文件:

bash 复制代码
# 格式:sdk uninstall java 版本号
# 示例:卸载JDK 21(谨慎操作,卸载后无法恢复)
sdk uninstall java 21.0.3-tem

5. 查看当前使用的JDK版本及路径

快速确认当前终端使用的JDK版本,以及JDK的安装路径:

bash 复制代码
sdk current java

五、常见问题排查(新手避坑)

整理了两个新手最容易遇到的问题,提前规避,少走弯路:

  1. 问题1:执行sdk命令提示"command not found"?

    解决方案:重新执行生效命令 source "$HOME/.sdkman/bin/sdkman-init.sh",若想永久避免,可重启终端(重启后会自动加载环境)。

  2. 问题2:安装JDK时下载速度慢?

    解决方案:SDKMAN! 有镜像源,可执行 sdk config 配置国内镜像(新手可直接百度"SDKMAN! 国内镜像配置",复制命令一键配置)。

六、总结

对于Ubuntu系统的Java开发者来说,SDKMAN! 绝对是提升效率的"神器"------无需手动配置环境变量,无需担心多版本冲突,安装、切换、卸载全程一键操作,尤其适合需要频繁切换JDK版本的场景。

本文以JDK 21为例,演示了从SDKMAN! 安装到JDK部署、后续版本管理的全流程,所有命令都经过实测,新手直接复制执行即可。后续如果需要安装其他版本的JDK(比如Java 8、Java 17),只需替换安装命令中的版本号,流程完全一致。

最后提醒一句:安装和卸载JDK时,注意确认版本号,避免误操作;如果需要长期使用某个版本,记得设置为默认版本,减少后续切换的麻烦。

相关推荐
寻寻觅觅☆14 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
l1t15 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
青云计划15 小时前
知光项目知文发布模块
java·后端·spring·mybatis
赶路人儿15 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar12316 小时前
C++使用format
开发语言·c++·算法
探路者继续奋斗16 小时前
IDD意图驱动开发之意图规格说明书
java·规格说明书·开发规范·意图驱动开发·idd
码说AI16 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS16 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
星空下的月光影子16 小时前
易语言开发从入门到精通:补充篇·网络爬虫与自动化采集分析系统深度实战·HTTP/HTTPS请求·HTML/JSON解析·反爬策略·电商价格监控·新闻资讯采集
开发语言
老约家的可汗16 小时前
初识C++
开发语言·c++