一、现状说明
.bashrc 里没写 JAVA_HOME 完全正常,Ubuntu 用 update-alternatives 管理多JDK时,不需要手动写JAVA_HOME ,系统会自动识别 java/javac。
1. 查看当前生效的Java路径
bash
which java
# 真实JDK目录
realpath $(which java)
2. 查看系统注册的全部JDK
bash
update-alternatives --list java
输出示例:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java
/usr/lib/jvm/java-1.17.0-openjdk-amd64/bin/java
二、两种方案,按需选择
方案1:临时生效(当前终端,关闭失效)
直接复制你想用的JDK路径执行:
bash
# JDK8
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# JDK17
# export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
# export PATH=$JAVA_HOME/bin:$PATH
验证:echo $JAVA_HOME
方案2:永久写入 ~/.bashrc(所有终端自动加载)
1. 编辑配置文件
bash
nano ~/.bashrc
2. 拉到文件最底部,粘贴下面配置(默认JDK8)
bash
# JDK8 永久环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 切换JDK17时,注释上面两行,放开下面两行
# export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
# export PATH=$PATH:$JAVA_HOME/bin
3. 保存生效
Ctrl+O 保存,Ctrl+X 退出,执行下面命令立刻生效:
bash
source ~/.bashrc
4. 验证永久配置
新开一个终端,输入:
bash
echo $JAVA_HOME
java -version
三、补充知识点
-
为什么原来
.bashrc没有JAVA_HOME?Ubuntu 官方安装的OpenJDK,通过
alternatives软链接管理命令,全局java命令可直接使用,系统不会自动写入JAVA_HOME环境变量,只有开发、运行部分Java程序(Maven、Tomcat、自定义Jar脚本)才需要手动配置。 -
运行Jar包不用配置JAVA_HOME 也能执行
直接指定JDK完整路径启动,无需环境变量:
bash
# JDK8运行jar
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -jar demo.jar