最常用且对所有用户生效的方式是在 /etc/profile 中配置 JAVA_HOME,需确保 JDK 解压路径固定(如 /opt/jdk-17.0.1),严格按顺序添加 export JAVA_HOME=...、export PATH=$JAVA_HOME/bin:$PATH、export CLASSPATH=.:$JAVA_HOME/lib,并执行 source /etc/profile 立即生效,最后用 echo $JAVA_HOME 和 java -version 验证。

直接在 /etc/profile 中配置 JAVA_HOME 是最常用、对所有用户和多数服务生效的方式,但要注意顺序、语法和刷新方式,否则容易不生效。
确认 JDK 已正确解压并拥有稳定路径
不要用带版本号动态变化的路径(如 /usr/lib/jvm/java-17-openjdk-17.0.1+12-1.amzn2.0.1),这类路径在系统更新后可能失效。推荐做法:
- 从 Oracle 或 Eclipse Temurin 官网下载
tar.gz包,解压到固定位置,例如:/opt/jdk-17.0.1或/usr/local/jdk-17 - 确保权限合理:
sudo chown -R root:root /opt/jdk-17.0.1sudo chmod -R 755 /opt/jdk-17.0.1 - 验证路径下存在
bin/java:ls /opt/jdk-17.0.1/bin/java应能正常显示
编辑 /etc/profile 添加标准环境变量声明
用 root 权限打开文件:sudo vim /etc/profile
在文件末尾(**不要加空格在等号两侧**)添加以下三行(顺序不能错):
立即学习“Java免费学习笔记(深入)”;
export JAVA_HOME=/opt/jdk-17.0.1 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib
⚠️ 关键细节:
-
JAVA_HOME必须先定义,再用于PATH和CLASSPATH,否则$JAVA_HOME展开为空 -
PATH中把$JAVA_HOME/bin放在最前,优先匹配你指定的 JDK -
CLASSPATH中的.表示当前目录,保留它以防运行本地 class 文件出错
立即生效:用 source 加载新配置
保存退出后,执行:
source /etc/profile
这会让当前 Shell 会话立刻读取全部新变量。验证是否成功:
-
echo $JAVA_HOME→ 应输出/opt/jdk-17.0.1 -
java -version→ 显示对应 JDK 版本(如 17.0.1) -
which java→ 应返回/opt/jdk-17.0.1/bin/java -
readlink -f $(which java)→ 确认不是指向/usr/bin/java这类系统软链
注意 systemd 服务或后台进程不自动继承
像 Tomcat、Spring Boot 的 systemd 服务默认不加载 /etc/profile,需显式声明:
- 编辑服务单元文件,如
/etc/systemd/system/myapp.service - 在
[Service]段中加入:Environment="JAVA_HOME=/opt/jdk-17.0.1"Environment="PATH=/opt/jdk-17.0.1/bin:/usr/local/bin:/usr/bin:/bin" - 执行:
sudo systemctl daemon-reloadsudo systemctl restart myapp


















