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
相关推荐
嘻哈∠※10 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
ltl11 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux
我是谁??11 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
白狐_79811 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25812 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅12 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
Shell运维手记12 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
测试运维日常笔记13 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器
极创信息13 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒14 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++