AlmaLinux上配置OpenJDK 17环境的核心是安装java-17-openjdk-devel包并正确设置JAVA_HOME为/usr/lib/jvm/下真实JDK根目录,而非/usr/bin/java软链接路径,再将$JAVA_HOME/bin加入PATH,最后通过javac -version和echo $JAVA_HOME验证。

AlmaLinux 上配置 OpenJDK 环境,核心就两步:装对包、设对 JAVA_HOME。别信“装完就自动生效”的说法——java -version 能跑不等于环境变量就配好了,Spring Boot、Maven、IDE 等工具全靠 JAVA_HOME 找 JDK 根目录,设错或没设,后续必报错。
用 dnf 安装 OpenJDK 17(推荐生产环境)
AlmaLinux 8/9 默认仓库中,OpenJDK 17 是当前 LTS 版本,也是最稳妥的选择。不要装 java-17-openjdk(仅 JRE),必须装带 -devel 的完整 JDK:
sudo dnf install java-17-openjdk-devel -y- 装完后运行
java -version,输出应含17.0.和openjdk字样 - 注意:AlmaLinux 9 默认不启用 EPEL,但 JDK 17 不需要额外仓库;若提示找不到包,先执行
sudo dnf update再试
正确设置 JAVA_HOME(最容易出错的一步)
很多人用 which java 或 type java 得到 /usr/bin/java,然后直接设 JAVA_HOME=/usr/bin/java ——这是错的。/usr/bin/java 只是软链接,真实 JDK 根目录在 /usr/lib/jvm/ 下。正确做法:
- 运行
dirname $(dirname $(readlink -f $(which java))),结果类似/usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el9_4.x86_64 - 把这个路径设为
JAVA_HOME,例如:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el9_4.x86_64 - 再补上
export PATH=$JAVA_HOME/bin:$PATH - 写入
~/.bashrc或/etc/profile.d/java.sh(后者对所有用户生效),然后source加载
验证 JAVA_HOME 是否真正生效
光看 java -version 不够,得确认工具链能识别 JDK 结构:
立即学习“Java免费学习笔记(深入)”;
- 运行
$JAVA_HOME/bin/javac -version,应输出同版本号;如果报 “command not found”,说明JAVA_HOME指向错误或bin没进PATH - 运行
echo $JAVA_HOME,确保输出的是完整路径,不是/usr/bin或空值 - 某些构建工具(如 Maven)会读
JAVA_HOME来决定用哪个tools.jar;设错会导致编译时报ClassNotFoundException: com.sun.tools.javac.Main
真正麻烦的不是安装,而是多版本共存时 JAVA_HOME 和系统默认 java 命令脱节。比如你装了 JDK 17 和 JDK 11,用 update-alternatives --config java 切换了默认 java,但 JAVA_HOME 还指着旧路径——这种隐性不一致,往往要等打包或 CI 流水线失败才暴露。


















