修改环境变量后不生效,通常是因为当前终端会话没有重新加载配置,或者系统存在多个 java 版本导致优先级冲突。最直接的处理方法是执行 source ~/.bashrc(或 .bash_profile)刷新当前环境,并使用 which java 确认实际调用的路径是否指向新安装的 jdk。如果路径正确但版本仍不对,说明旧版本的 java 命令在 $path 中排在前面,需要调整顺序或移除旧版本。

如何验证并修正 PATH 中的 Java 路径
通过 echo $PATH 查看环境变量,检查新 JDK 的 bin 目录是否在旧版本之前。若不在,需编辑配置文件调整顺序。

export JAVA_HOME=/usr/local/jdk-17 export PATH=$JAVA_HOME/bin:$PATH
上述代码将新 JDK 的 bin 目录置于 $PATH 首位。保存后运行 source ~/.bashrc。再次执行 java -version,应显示对应版本。若仍无效,使用 type -a java 查看所有同名命令位置,手动删除或注释掉旧路径。
如何处理多版本共存时的默认切换
当系统中安装了多个 JDK 时,可通过 update-alternatives 工具管理默认版本。该工具允许用户在不同安装路径间切换,而无需反复修改 PATH。

sudo update-alternatives --install /usr/bin/java java /usr/local/jdk-17/bin/java 1 sudo update-alternatives --config java
执行 update-alternatives --install 注册新 JDK,数字 1 为优先级。随后运行 --config java 交互式选择默认版本。选择后,java -version 将立即反映所选版本。此方法适用于 Ubuntu/Debian 系系统,CentOS/RHEL 可使用 alternatives 命令类似操作。
为什么 source 后 java -version 仍显示旧版本
若 source 后版本未变,常见原因是 /etc/profile.d/ 下的脚本覆盖了用户配置,或使用了 alias 别名强制指定了旧路径。检查 alias java 是否有定义,若有则用 unalias java 清除。同时检查 /etc/environment 文件,确保其中未硬编码旧版 PATH。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











