在Java中如何配置JRE与JDK的默认版本_默认版本切换设置解析
技术百科
P粉602998670
发布时间:2026-01-02
浏览: 次 Java默认版本由PATH中首个java/javac路径决定,需设JAVA_HOME指向JDK根目录并使%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)置于PATH最前,再验证java -version与javac -version版本一致。
Java中配置JRE与JDK默认版本,本质是控制java、javac等命令实际调用的路径。系统不区分“JRE默认”和“JDK默认”,而是通过PATH环境变量顺序决定哪个bin目录优先被找到——谁在前面,谁就是“默认”。真正需要设置的是JAVA_HOME(供其他工具如Maven、IDE识别JDK根目录),以及确保PATH指向你想要的JDK的bin目录。
确认已安装的JDK/JRE位置
先查清本地有哪些Java版本,避免配错路径:
- Windows:打开命令提示符,执行
where java和where javac,看输出路径是否一致;再运行java -version和javac -version,核对版本号 -
macOS/Linux:终端执行
which java、which javac,再用/path/to/java -version验证具体版本;也可用/usr/libexec/java_home -V(macOS)或update-java-alternatives -l(部分Linux发行版)列出所有已注册JDK
设置JAVA_HOME并更新PATH(关键步骤)
JAVA_HOME 应指向JDK安装根目录(不含bin),不是JRE目录。PATH则必须包含$JAVA_HOME/bin(Windows为%JAVA_HOME%\bin)且放在最前:
- Windows(系统级):右键“此电脑”→属性→高级系统设置→环境变量→新建系统变量
JAVA_HOME,值填类似C:\Program Files\Java\jdk-17.0.1;再编辑Path,把%JAVA_HOME%\bin移到最顶端 - macOS/Linux(推荐写入
~/.zshrc或~/.bash_profile):export JAVA_HOME=$(/usr/libexec/java_home -v 17)export PATH=$JAVA_HOME/bin:$PATH
保存后执行source ~/.zshrc生效
验证是否生效
关闭所有终端/命令行窗口,新开一个,依次执行:
-
echo $JAVA_HOME(macOS/Linux)或echo %JAVA_HOME%(Windows)→ 应显示你设定的JDK路径 -
java -version→ 显示JDK自带的JRE版本(如17.0.1) -
javac -version→ 必须显示相同主版本号(如17.0.1),否则说明PATH没指向JDK的bin,可能误指到了JRE的bin或旧版本
多版本共存时的快速切换(可选)
不需要卸载旧版本,靠修改JAVA_HOME和PATH即可切换。进阶用户可用工具简化操作:
- macOS:直接用
/usr/libexec/java_home -v 11获取JDK 11路径,再赋值给JAVA_HOME - Linux(Debian/Ubuntu系):安装
openjdk-11-jdk和openjdk-17-jdk后,用sudo update-alternatives --config java和--config javac交互式切换 - Windows:写几个批处理脚本(如
setjdk11.bat),内容为set JAVA_HOME=C:\...\jdk-11+set PATH=%JAVA_HOME%\bin;%PATH%,双击运行即刻切换(仅当前窗口有效)
基本上就这些。核心就两点:JAVA_HOME指向正确的JDK根目录,PATH开头包含它的bin。别把JRE路径当JDK用,也别漏掉PATH里的bin——这两处错得最多。
# windows
# 电脑
# mac
# 工具
# win
# linux
# ubuntu
# 环境变量
# macos
# cos
# java
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win10 BitLocker加密教程 Win10
- Win11怎么更改电脑密码_Windows 11修
- 如何在Golang中捕获JSON序列化错误_Gol
- Windows10电脑怎么设置自动连接WiFi_W
- Win11怎么关闭自动调节亮度 Win11禁用内容
- C++如何使用Qt创建第一个GUI窗口?(入门教程
- Python装饰器设计思路_功能增强机制说明【指导
- 如何使用Golang实现函数指针_函数变量与回调示
- XML的“混合内容”是什么 怎么用DTD或XSD定
- 如何高效获取循环末次生成的 NumPy 数组最后一
- Win11怎么开启远程桌面连接_Windows11
- Windows10系统怎么查看系统版本_Win10
- 如何在Golang中捕获HTTP服务器错误_Gol
- Win10电脑怎么设置IP地址_Windows10
- c# F# 的 MailboxProcessor
- Win11怎么更改文件夹图标_自定义Win11文件
- Win11如何设置环境变量 Win11添加和修改系
- 如何快速验证Golang安装是否成功_运行go v
- 如何在Golang中指定模块版本_使用go.mod
- Win11怎么设置闹钟_Windows 11时钟应
- Win11系统占用空间大怎么办 Win11深度瘦身
- php修改数据怎么批量改状态_批量更新status
- php本地部署后数据库连接报错_1045acces
- c++如何判断文件是否存在_c++ filesys
- mac怎么打开终端_MAC终端Terminal使用
- 如何在Golang中使用log包输出不同级别日志_
- PHP主流架构如何处理会话管理_Session与C
- c++ try_emplace用法_c++ map
- Flask 表单数据通过 SMTP 发送邮件的完整
- Win10怎么查看内存时序参数_Win10CPU-
- 如何在 ACF 中正确更新嵌套多层的 Group
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- 如何在Golang中实现自定义Benchmark_
- 如何使用Golang reflect检查方法数量_
- Win11怎么关闭搜索历史 Win11清除搜索框最
- 如何使用 Selenium 正确获取篮球参考网站球
- c++怎么使用std::tuple存储多元组数据_
- Mac怎么进行语音输入_Mac听写功能设置与使用【
- Mac如何解压zip和rar文件?(推荐免费工具)
- Windows10无法连接到Internet_Wi
- Windows7如何安装系统镜像_Windows7
- 短链接怎么用php递归还原_多层加密链接的处理法【
- Win11怎么设置ip地址_Windows 11手
- php485函数怎么捕获异常_php485错误处理
- Python并发安全问题_资源竞争说明【指导】
- GML (Geography Markup Lan
- Win11如何设置计划任务 Win11定时执行程序
- c# Task.ConfigureAwait(tr
- c++如何使用std::bind绑定函数参数_c+
- 如何诊断并终止卡死的 multiprocessin

QQ客服