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程序了!

相关推荐
zhanghe6879 小时前
es的密码带有特殊字符,导出
java
梦曦i9 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队9 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
pnoker9 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy9 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
乌恩大侠10 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
面向Google编程10 小时前
你把 Claude Code 当聊天框,高手却让它"自己查自己":3 个拉开差距的工程习惯
ai编程·claude
天远数科10 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
yume_sibai10 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
lifallen10 小时前
Skill 的生命周期:问题消失以后
人工智能·学习·ai·ai编程