发布于2026-07-13 阅读(0)
扫一扫,手机访问
在Ubuntu系统上管理Ja va版本,几乎是每个开发者都会遇到的场景。不同项目依赖不同JDK,来回切换如果全靠手工捣鼓路径,既容易出错也浪费时间。下面这套操作流程,涵盖了从安装、切换到环境变量配置的完整路径,同时也整理了jenv和SDKMAN!这两种更高效的工具方案。

先更新包索引,然后把常用的LTS版本一次性装上,比如OpenJDK 11和OpenJDK 17。两条命令搞定:
sudo apt updatesudo apt install openjdk-11-jdk openjdk-17-jdk装完后用 ja va -version 看一眼,确认当前默认版本是谁。如果后续要装更多版本,同样的方式追加即可。
这是Ubuntu自带的多版本管理机制,不用额外装任何东西。执行下面这条命令,系统会列出所有已注册的Ja va路径,你只需要输入对应的编号就能切换默认版本:
sudo update-alternatives --config ja va如果列表里缺了某个你刚安装的JDK,可以手动把它注册进去,顺便指定优先级(数值越高,自动选择时越靠前):
sudo update-alternatives --install /usr/bin/ja va ja va /usr/lib/jvm/ja va-11-openjdk-amd64/bin/ja va 1sudo update-alternatives --install /usr/lib/jvm/ja va-17-openjdk-amd64/bin/ja va 2顺手把编译器也切一下,不然ja va版本变了ja vac还是旧的,容易出幺蛾子:
sudo update-alternatives --config ja vac最后用 ja va -version 和 ja vac -version 双重确认,确保切换生效。
光切换ja va命令还不够,很多框架和构建工具(像Ma ven、Gradle、Tomcat)都要读 JA VA_HOME 环境变量。这里分三种场景:
给当前用户设置,编辑 ~/.bashrc 或 ~/.zshrc,追加:
export JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk-amd64export PATH=$JA VA_HOME/bin:$PATH然后执行 source ~/.bashrc 或 source ~/.zshrc 让配置立即生效。
给所有用户设置,更稳妥的做法是写入 /etc/environment:
JA VA_HOME="/usr/lib/jvm/ja va-11-openjdk-amd64"PATH="$JA VA_HOME/bin:$PATH"修改后重新登录,或者 source /etc/environment 也能生效。
偷懒小技巧:不想每次都写死路径,可以用一行命令从当前默认ja va路径自动推导出JA VA_HOME:
export JA VA_HOME=$(readlink -f /usr/bin/ja va | sed "s:bin/ja va::")这样不管你用update-alternatives切到哪个版本,JA VA_HOME都会自动跟随。
如果项目间版本切换非常频繁,或者你需要在不同目录下自动切换到不同JDK,那手动管理就有点力不从心了。推荐两个流行工具:
jenv——轻量级,适合精细化控制。安装很简单:
git clone https://github.com/jenv/jenv.git ~/.jenvexport PATH="$HOME/.jenv/bin:$PATH" 和 eval "$(jenv init -)",然后 source ~/.bashrcjenv add /usr/lib/jvm/ja va-11-openjdk-amd64、jenv add /usr/lib/jvm/ja va-8-openjdk-amd64jenv global 11.0,当前shell用 jenv shell 8.0,甚至可以针对某个目录用 jenv local 17.0,这样进入该目录自动切。SDKMAN!——更全能,不仅能管理Ja va,还能管理Ma ven、Gradle、Kotlin等一大堆SDK。安装一条命令:
curl -s "https://get.sdkman.io" | bash,然后 source "$HOME/.sdkman/bin/sdkman-init.sh"sdk install ja va 11.0.11-open、sdk use ja va 8.0.292-open、sdk default ja va 11.0.11-open。SDKMAN! 可以自动帮你下载安装并配置好环境,省去手动下载tar包的麻烦。
即便步骤都走了一遍,偶尔还是会遇到翻车的情况。这里列几个典型场景的应对思路:
版本冲突或残留旧版本——尽量统一使用 update-alternatives 来管理,别同时用手动改软链接加环境变量混着来。如果某个旧版本确实不需要了,用 sudo apt-get remove openjdk- 先卸载,再重新配置默认版本。
某些应用还是用旧版本——比如Tomcat、Jenkins这类服务,它们通常有自己的启动脚本或配置文件,里面可能硬编码了JA VA_HOME。以Tomcat为例,检查 /etc/default/tomcat 或 catalina.sh,找到 JA VA_HOME 变量改成正确路径,然后 sudo systemctl restart tomcat。
环境变量不生效——先确认你改的是哪个配置文件:~/.bashrc、~/.zshrc、/etc/environment 三者的生效范围不一样。执行 echo $JA VA_HOME 看输出对不对,如果为空,八成是语法错了或者没source。实在不行,关掉终端重新打开,或者重新登录一下系统。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8