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,使系统能在任意目录下找到 java、javac 等命令
CLASSPATH 指定类文件的搜索路径(JDK 9+ 通常无需配置)

三、常见问题排查

问题现象 可能原因与解决方案
输入 java --version 提示"不是内部或外部命令" 1. 检查 Path 中是否已添加 %JAVA_HOME%\bin 2. 确认 JAVA_HOME 路径正确(路径下应有 bin 文件夹) 3. 重新打开命令行窗口
java --version 与 javac --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-17、D:\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程序了!

相关推荐
小码哥_常3 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮6 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
学长毕设6 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
她说可以呀7 小时前
Vue插槽
前端·javascript·vue.js
qq_448011167 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
zzu123zsw7 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
aixingpan7 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352908 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
源码集结号8 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场9 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算