在 Ubuntu 22.04 上安装 OpenJDK 并实现 在不同项目中灵活切换 Java 版本,可以使用 update-alternatives + 环境变量管理两种方式实现

Ubuntu 官方仓库支持多个 OpenJDK 版本(如 8、11、17、21):
# 更新包列表sudo apt update# 安装你需要的 JDK 版本(例如 11 和 17)sudo apt install openjdk-11-jdk openjdk-17-jdk openjdk-21-jdk
系统会自动为每个 JDK 注册 java、javac 等命令,但我们可以手动确认或添加:
如果未自动注册,可手动添加(以 JDK 17 为例):
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 1700
3:交互式切换版本
# 切换 java 命令sudo update-alternatives --config java# 切换 javac 命令sudo update-alternatives --config javac
然后选择对应编号即可。
jenv 是一个类似 rbenv/pyenv 的 Java 版本管理工具,可以为每个项目目录自动切换 JDK 版本。
# 安装依赖sudo apt install git curl# 克隆 jenv 到本地git clone https://github.com/jenv/jenv.git ~/.jenv
编辑 ~/.bashrc(如果你用 Zsh,则编辑 ~/.zshrc):
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrcecho 'eval "$(jenv init -)"' >> ~/.bashrcsource ~/.bashrc
⚠️ 注意:
eval "$(jenv init -)"必须在PATH设置之后。
# 自动检测系统 JDK(包括 /usr/lib/jvm 下的 OpenJDK)jenv enable-plugin exportjenv enable-plugin mavenjenv add /usr/lib/jvm/java-11-openjdk-amd64jenv add /usr/lib/jvm/java-17-openjdk-amd64jenv add /usr/lib/jvm/java-21-openjdk-amd64
如果提示权限问题,确保这些目录可读。
查看已注册版本:
jenv versions
输出示例:
* system (set by /home/ball/.jenv/version) 11.0 11.0.21 17.0 17.0.9 21.0 21.0.1
进入你的项目目录,运行:
cd ~/my-java-projectjenv local 17.0 # 会在当前目录生成 .java-version 文件
以后只要进入该目录,java -version 就会自动使用 JDK 17!
验证:
cd ~/my-java-projectjava -version # 应显示 17cd ~java -version # 回到全局默认(或 system)