必须先确认系统架构与jdk版本匹配,再通过dnf安装或手动解压配置java_home和path,最后执行source加载并验证echo $java_home、java -version、javac -version三者均成功。

在Red Hat Enterprise Linux上让java -version命令生效,必须让系统知道JDK 17安装在哪、编译器和运行时工具在哪,否则终端只会报“java: command not found”。这问题不是没装好,而是装好了但系统找不到——路径写错、变量没加载、shell没刷新,三者任一出错都会卡住。
确认系统架构与JDK版本匹配
先跑两行命令,避免后续全白忙:
执行 uname -m 看输出是 【x86_64】 还是 【aarch64】;
再执行 cat /etc/redhat-release 确认RHEL大版本(如RHEL 8.9或RHEL 9.4)。
ARM服务器(aarch64)若强行用x64版JDK,解压后首次运行java -version就会报 cannot execute binary file,这个错误不可逆,必须重下包。
安装JDK 17(推荐OpenJDK方式)
方法一:用dnf安装(RHEL 8+官方源,最稳)
执行 sudo dnf install java-17-openjdk-devel。
安装完成后,JDK自动注册到 /usr/lib/jvm/java-17-openjdk- 开头的目录,无需手动解压。
方法二:手动安装Oracle JDK(需特定LTS支持或商业授权)
从Oracle官网下载Linux x64 tar.gz包 → 上传至服务器(如/opt)→ 执行:sudo mkdir -p /opt/jdk → sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /opt/jdk --strip-components=1。
注意:解压后进目录执行 ls -F,确认存在 bin/、lib/、jmods/ 三个子目录,否则说明解压失败或包损坏。
配置JAVA_HOME与PATH环境变量
第一步:确定JDK根目录
若用dnf安装,执行 readlink -f $(which java) | sed 's|/bin/java$||',输出类似 /usr/lib/jvm/java-17-openjdk-17.0.1.12-2.e18.x86_64;
若手动安装,路径就是你解压的目标目录,如 /opt/jdk。
【关键提醒:JAVA_HOME必须指向JDK根目录,绝不能带/bin后缀】,设成/opt/jdk/bin会导致Maven、Gradle、IDEA全部报tools.jar not found。
第二步:创建全局环境变量脚本
执行 sudo nano /etc/profile.d/java.sh,只写两行:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.1.12-2.e18.x86_64export PATH=$JAVA_HOME/bin:$PATH
保存退出。不用配CLASSPATH——JDK 9起已弃用,硬加反而干扰模块系统。
第三步:立即加载新变量
执行 source /etc/profile.d/java.sh。
这一步必须做,否则新开终端才生效;当前终端不执行,后面所有验证都会失败。
验证配置是否真正生效
依次执行三行命令,缺一不可:echo $JAVA_HOME → 应精确输出你设置的路径,不能为空或乱码;java -version → 必须显示openjdk version "17.0.1"或类似字样,且无command not found;javac -version → 输出javac 17.0.1,证明编译器也已就位。
三项全通过,说明环境变量已穿透到所有shell层级,Java开发环境就绪。











