Ubuntu 切换java版本

一、现状说明

.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

三、补充知识点

  1. 为什么原来 .bashrc 没有JAVA_HOME?

    Ubuntu 官方安装的OpenJDK,通过 alternatives 软链接管理命令,全局java命令可直接使用,系统不会自动写入JAVA_HOME环境变量,只有开发、运行部分Java程序(Maven、Tomcat、自定义Jar脚本)才需要手动配置。

  2. 运行Jar包不用配置JAVA_HOME 也能执行

    直接指定JDK完整路径启动,无需环境变量:

bash 复制代码
# JDK8运行jar
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -jar demo.jar
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时3 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang3 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot