Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”

这是一个 Java 快速入门项目,非常适合用来练手。相关源码已上传至 GitHub,👉 点击查看 GitHub 仓库。欢迎交流指正、提交 issue。

安装 JDK 后,若在终端执行 java --version 提示"不是内部或外部命令",说明环境变量未正确配置。本文介绍 Windows 系统下 Java 环境变量的配置方法。

一、配置环境变量

1. 打开环境变量设置界面

  • 方法一(推荐) :快捷键 Win + R → 输入 sysdm.cpl → 回车 → 选择"高级"选项卡 → 点击"环境变量"
  • 方法二:右键"此电脑" → 属性 → 高级系统设置 → 环境变量
  • 方法三Win + S 搜索"编辑系统环境变量" → 点击打开

2. 新建 JAVA_HOME 变量

在"系统变量"区域点击【新建】:

  • 变量名JAVA_HOME
  • 变量值 :填写 JDK 安装根目录(例如 D:\Java\jdk-21

注意 :变量值应为 JDK 根目录,不要包含 \bin

3. 编辑 Path 变量

在"系统变量"中找到 Path,双击打开:

  • 点击【新建】,添加条目:%JAVA_HOME%\bin

提示:建议将此条目上移至靠前位置,避免与其他 Java 版本冲突。

4. (可选)配置 CLASSPATH

现代 JDK(JDK 9+)通常无需手动配置。如需配置,可新建系统变量:

  • 变量名CLASSPATH
  • 变量值.;%JAVA_HOME%\lib

注意 :开头的 . 表示当前目录,不可省略。

5. 保存并验证

  1. 依次点击"确定"保存所有设置

  2. 重新打开一个 CMD 或 PowerShell 窗口(必须新开)

  3. 执行以下命令验证:

    bash 复制代码
    java --version
    javac --version

    若两个命令均正确输出版本号(示例如下),则配置成功:

    text 复制代码
    java version "21.0.x" 202x-xx-xx LTS
    Java(TM) SE Runtime Environment (build 21.0.x+xx-xx)
    Java HotSpot(TM) 64-Bit Server VM (build 21.0.x+xx-xx, mixed mode)
    
    javac 21.0.x

二、环境变量说明

变量名 作用
JAVA_HOME 指向 JDK 安装根目录,便于其他变量引用,也被众多开发工具依赖
Path 添加 %JAVA_HOME%\bin,使系统能在任意目录下找到 javajavac 等命令
CLASSPATH 指定类文件的搜索路径(JDK 9+ 通常无需配置)

三、常见问题排查

问题现象 可能原因与解决方案
输入 java --version 提示"不是内部或外部命令" 1. 检查 Path 中是否已添加 %JAVA_HOME%\bin 2. 确认 JAVA_HOME 路径正确(路径下应有 bin 文件夹) 3. 重新打开命令行窗口
java --versionjavac --version 版本不一致 Path 中存在多个 Java 路径,将新配置的 %JAVA_HOME%\bin 上移,或删除旧的 Java 路径
JAVA_HOME 路径含空格(如 Program Files Path 中使用 "%JAVA_HOME%\bin"(加双引号),或将 JDK 安装到无空格路径(如 D:\Java\jdk-21
在 PowerShell 中验证配置 执行以下命令检查: $env:JAVA_HOME(查看 JAVA_HOME 值) $env:Path -split ";"(查看 Path 所有条目)

四、多版本 JDK 切换(进阶)

若需安装多个 JDK 版本(如 JDK 17、JDK 21),可将其安装到不同目录(例如 D:\Java\jdk-17D:\Java\jdk-21)。

切换方法

  1. 手动切换 :修改 JAVA_HOME 变量值,指向目标版本的 JDK 根目录。
  2. 工具管理 :使用第三方工具(如 jenv)进行多版本管理,可自动切换环境变量。

提示 :修改 JAVA_HOME 后,需重新打开命令行窗口生效。

五、总结

配置Java环境变量的核心三步:

  1. 设置 JAVA_HOME → JDK安装路径
  2. 编辑 Path → 添加 %JAVA_HOME%\bin
  3. 验证 → 终端输入 java --version 或 javac --version 命令

配置完成后,就可以在任意目录下编译和运行Java程序了!

相关推荐
怕浪猫1 小时前
用 TRAE Work 来写这篇关于 TRAE Work 的征文
aigc·agent·ai编程
命运之光1 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
To_OC1 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom
RETURN100ERRORS2 小时前
Agent - 记忆
ai编程
IT_陈寒2 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
marvelyu2 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
子兮曰3 小时前
Bun vs Node.js 深度对决:跑分快 4 倍,真实业务只剩 3%,2026 年到底该怎么选?
前端·后端·typescript
计算机魔术师3 小时前
终端用户
前端
码事漫谈3 小时前
把 AI 拆掉,你的系统还能跑吗?
前端·后端