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
相关推荐
苏生Susheng几秒前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
devpotato7 分钟前
Java 批量并发请求:从“能并发“到“结果按完成顺序可用“的三种写法与选型
java
Ruiery11 分钟前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败13 分钟前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW20 分钟前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li35 分钟前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng1 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
想要成为老金高手1 小时前
Kubernetes 调度器详解:从 nodeName 到污点容忍
java·容器·kubernetes
额额额对了1 小时前
Linux 进程间通信(IPC)核心机制:消息队列、共享内存与信号量详解
linux·网络·网络协议
吴长建先生重名了1 小时前
ElasticSearch 检索系统性能优化实战:基准测试
java