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
相关推荐
FoldWinCard2 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
spencer_tseng3 小时前
Redis + Nacos.bat
java·windows·dos
零涂毕业设计3 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
troyzhxu3 小时前
列表查询的 GraphQL —— 一行代码终结你的 if-else 地狱!
java·springboot·graphql
tedcloud1233 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质3 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX4 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.4 小时前
Linux系统管理
linux·运维
孫治AllenSun4 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm