2026/3/28 21:34:56
网站建设
项目流程
哪家网站建设公司好,各类网站推广,google下载安卓版下载,wordpress增加搜索框WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java#xff08;项目级切换#xff0c;真香#xff09;
在 WSL2 Ubuntu 做 Java 后端开发时#xff0c;经常会遇到这种组合#xff1a;
老项目还在 Java 8新项目已经是 Java 17 / 21同一台机器、同一个终端#xff0c;需要随时切换…WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java项目级切换真香在 WSL2 Ubuntu 做 Java 后端开发时经常会遇到这种组合老项目还在 Java 8新项目已经是 Java 17 / 21同一台机器、同一个终端需要随时切换 JDK 版本Maven、脚手架脚本、命令行工具都要跟着走如果你还在来回改JAVA_HOME强烈建议上 SDKMAN。一、SDKMAN 是什么为什么适合 WSL2SDKMANSoftware Development Kit Manager是 Linux/WSL 下专门用来管理多版本 JDK/SDK 的命令行工具。它的几个关键特性非常适合日常开发同时安装多个 Java 版本8/11/17/21 随便切一行命令切换 JDK立刻生效支持「项目级」固定 Java 版本靠.sdkmanrc不污染系统全局环境变量Maven、Gradle、脚本直接跟随当前java对 WSL2 开发者来说这几乎是目前体验最佳的多 JDK 管理方案。二、在 Ubuntu / WSL2 安装 SDKMAN一劳永逸在你的 Ubuntu / WSL2 终端中执行保持网络能访问外网curl -s https://get.sdkman.io | bash安装完成后加载环境新开终端也可以source $HOME/.sdkman/bin/sdkman-init.sh验证是否安装成功sdk version如果能正常输出版本信息说明 SDKMAN 已经装好了。三、用 SDKMAN 安装多个 Java 版本1. 查看可用 Java 版本sdk list java常见推荐以 Temurin 为例Java 88.0.xxx-temJava 1717.0.xxx-tem2. 安装 Java 8 和 Java 17示例sdk install java 8.0.392-tem sdk install java 17.0.10-tem查看本机已安装的版本sdk list java | grep installed到这一步你的 WSL2 环境里已经有多套 JDK 可以随时切换了。四、全局切换 Java 版本当前终端立即生效想在当前终端切到 Java 17sdk use java 17.0.10-tem验证一下java -version javac -version效果是当前 shell 立刻使用 Java 17Maven、脚手架、命令行工具都会跟着用这一套 JDK如果想把某个版本设成「默认版本」全局默认可以用sdk default java 17.0.10-tem五、核心功能项目级 Java 版本固定强烈推荐这一块基本是 SDKMAN 的「杀手级」功能让每个项目有自己的 Java 版本配置。1. 进入项目目录cd ~/project/mom/admin2. 初始化项目环境sdk env init执行后项目根目录下会生成一个.sdkmanrc文件。3. 编辑.sdkmanrcnano .sdkmanrc写入你想绑定的 JDK 版本例如java17.0.10-tem保存退出即可。4. 启用项目级 Java 版本在项目目录中执行一次sdk env或者直接开启自动模式推荐sdk config set sdkman_auto_env true之后的体验就是每次cd进该项目目录Java 自动切到 17离开目录Java 自动恢复为全局默认版本多项目并行开发时这一点可以极大降低「切错 JDK」导致的各种莫名报错。六、SDKMAN Maven 工具钾 的实际效果在项目目录中执行java -version mvn -v通常会看到java版本就是.sdkmanrc中配置的那一套mvn使用的是同一套 JDKJAVA_HOME由 SDKMAN 管理此时让脚本或工具去执行mvn compile就不会再遇到类似invalid target release: 17这类因为 JDK 不匹配导致的构建错误也不需要手动调环境变量、改 IDE 里的 JDK 配置。七、对比常见几种方案下面简单对比一下几种常见的多 JDK 管理方式方案是否推荐说明update-alternatives⚠️ 一般只适合全局切换项目混用不方便手动改 JAVA_HOME❌ 不推荐容易忘、步骤多、极易出错SDKMAN推荐✅ 强烈推荐支持项目级自动切换配置干净在 WSL2 / Ubuntu 环境下SDKMAN 的易用性和可维护性基本是完胜。八、实践中的一些小建议踩坑总结结合实际踩坑经验有几条可以直接遵循让「Java 版本随项目走」不要随系统走老项目固定在 Java 8新项目用 Java 17 / 21可以长期共存用 SDKMAN 统一管理 JDK多 Maven 版本的话可以配合 Maven Toolchains 兜底尽量避免再手动改JAVA_HOME等系统环境变量如果你同时在用Maven / GradleSpring Boot / 微服务项目多个项目并行开发单体 微服务 / 新老系统甚至本地脚本、自动化工具那么「SDKMAN 项目级.sdkmanrc」会让环境切换这件事变得非常顺手。九、最后的一句话总结在 WSL2 / Ubuntu 下做 Java 开发SDKMAN 基本可以视为多版本 JDK 管理的「默认解」。只要把「每个项目都配一份.sdkmanrc」养成习惯环境切换这件事基本就从你的日常心智负担里消失了。