在 CentOS 下设置 JAVA_HOME 通常有几种常见方式,下面按最常用、最规范的顺序说明。
which java
一般输出:
/usr/bin/java
再查真实路径:
ls -l /usr/bin/java
可能指向:
/etc/alternatives/java
继续查:
ls -l /etc/alternatives/java
例如:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7.x86_64/jre/bin/java
✅ 那么 JAVA_HOME 应为:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7.x86_64
ls /usr/lib/jvm/
你会看到类似:
java-1.8.0-openjdk
java-11-openjdk
编辑用户环境文件:
vi ~/.bashrc
在末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
使生效:
source ~/.bashrc
sudo vi /etc/profile.d/java.sh
写入:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
赋予执行权限:
sudo chmod +x /etc/profile.d/java.sh
生效:
source /etc/profile
如果系统用了 alternatives:
sudo alternatives --config java
设置后可用:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")
echo $JAVA_HOME
java -version
✅ JAVA_HOME 不要指向 /bin 或 /jre
❌ 错误示例:
/usr/lib/jvm/java-8-openjdk/bin
✅ 正确:
/usr/lib/jvm/java-8-openjdk
如果你用的是 CentOS 7 / 8 / Stream、OpenJDK 还是 Oracle JDK,可以告诉我,我可以给你更精确的路径。