Windows 下手动安装java JDK 21 并配置环境变量(详细记录)

在 Windows 环境中手动安装 JDK,本质上就是完成两件事:第一,把 JDK 安装包解压到固定目录;第二,正确配置系统环境变量,让操作系统能够识别 javajavac 等命令,并让后续的开发工具链(IDEA、Maven、Gradle、Tomcat 等)能够定位到 JDK 的安装路径。

本文记录一次 JDK 21 的手动安装过程,以及在 Windows 中需要配置哪些环境变量、每个变量的作用、常见错误和验证方式。


一、JDK 安装目录说明

JDK 已经下载并放置在如下路径:

D:\environment\JDK\jdk-21.0.10 

该目录结构通常如下:

  • bin:核心可执行文件目录(java、javac、javadoc 等)
  • lib:JDK 核心类库
  • conf:JDK 配置文件目录
  • include:JNI 相关头文件
  • jmods:Java 模块系统文件(JDK 9+ 引入)

后续所有环境变量配置都将基于这个目录。


二、为什么必须配置环境变量

如果仅仅把 JDK 解压到某个目录,但没有配置环境变量,那么:

  • 在命令行执行 java -version 会提示找不到命令
  • IDEA / Eclipse / Maven / Gradle 等工具可能无法自动定位 JDK
  • 多版本 JDK 共存时,系统会随机使用某个版本,造成版本冲突

因此,配置环境变量是手动安装 JDK 的关键步骤。


三、必须配置的环境变量

手动安装 JDK 21 时,最推荐、最标准的配置方式是:

  1. 配置 JAVA_HOME
  2. Path 中加入 %JAVA_HOME%\bin

这两项配置是工业界通用规范,也是各类工具链默认识别的规则。


四、配置 JAVA_HOME(核心变量)

1. JAVA_HOME 的作用

JAVA_HOME 用于指向 JDK 的根目录,是 Java 生态中最关键的环境变量之一。

大量工具默认依赖它,例如:

  • Maven 会通过 JAVA_HOME 查找 JDK
  • Gradle 会通过 JAVA_HOME 查找 JDK
  • Tomcat 在启动脚本中常用 JAVA_HOME
  • Jenkins、Spring Boot、各种 CI/CD 脚本都会优先读取 JAVA_HOME

因此,配置 JAVA_HOME 基本属于必须步骤。

2. JAVA_HOME 的配置值

在 Windows 系统变量中新增变量:

变量名:

JAVA_HOME 

变量值:

D:\environment\JDK\jdk-21.0.10 

注意:这里必须填写 JDK 的根目录,而不是 bin 目录。错误写法例如:

D:\environment\JDK\jdk-21.0.10\bin 

这种写法会导致后续工具无法正确识别 JDK。


五、配置 Path(让系统能直接执行 java/javac)

1. Path 的作用

Path 是 Windows 用来搜索可执行程序的环境变量。

如果 Path 中包含了 Java 的 bin 目录,那么在任意位置打开 CMD 或 PowerShell,都可以直接执行:

  • java
  • javac
  • javadoc
  • jar

否则每次执行命令都必须写完整路径,例如:

D:\environment\JDK\jdk-21.0.10\bin\java -version 

这显然不适合日常开发。

2. Path 的配置方式

进入系统变量中的 Path,新增一条:

%JAVA_HOME%\bin 

这里推荐使用 %JAVA_HOME% 的写法,而不是直接写绝对路径,例如:

D:\environment\JDK\jdk-21.0.10\bin 

原因在于:

  • 可维护性更强,未来更换 JDK 版本只需要改 JAVA_HOME
  • 更符合工程规范
  • 多数工具链文档都以 %JAVA_HOME% 为标准写法

六、CLASSPATH 是否需要配置

1. CLASSPATH 的历史背景

在早期 Java 版本(尤其是 JDK 1.4、1.5、1.6 时代),很多教程会要求配置:

CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 

原因是当时 Java 编译器、运行时依赖一些 jar 包,需要通过 CLASSPATH 让 JVM 找到这些类库。

2. JDK 21 是否需要 CLASSPATH

在 JDK 9 之后,Java 引入了模块化(JPMS),JDK 内部结构发生了较大变化,传统的:

  • dt.jar
  • tools.jar

在 JDK 21 中已经不存在。

同时,在现代开发环境中:

  • Maven 会管理 classpath
  • Gradle 会管理 classpath
  • IDEA 会自动配置项目依赖
  • Spring Boot 运行时会自动组织依赖路径

因此,JDK 21 环境下,手动配置 CLASSPATH 不仅没有必要,反而可能引入错误,造成编译、运行路径冲突。

3. 结论

在 JDK 21 的手动安装中,CLASSPATH 不建议配置。

保持为空是最合理的选择。


七、环境变量配置的最终推荐清单

在本次安装中,需要配置的环境变量如下。

1. JAVA_HOME(系统变量)

JAVA_HOME = D:\environment\JDK\jdk-21.0.10 

2. Path(系统变量)

在 Path 中新增:

%JAVA_HOME%\bin 

3. CLASSPATH(不配置)

JDK 21 不需要配置 CLASSPATH,保持未配置即可。


八、配置完成后的验证方法

环境变量配置完成后,必须重新打开命令行窗口,因为环境变量只会在新启动的进程中生效。

随后执行以下命令验证。

1. 检查 Java 运行时版本

执行:

java -version 

正常情况下会输出类似信息:

java version "21.0.10" 2025-xx-xx LTS Java(TM) SE Runtime Environment ... Java HotSpot(TM) 64-Bit Server VM ... 

重点在于版本号必须匹配 21.0.10

2. 检查 Java 编译器版本

执行:

javac -version 

正常输出类似:

javac 21.0.10 

如果 java 能执行但 javac 不能执行,通常说明 Path 配置有误,或者指向的是 JRE 而非 JDK。

3. 检查 JAVA_HOME 是否生效

执行:

echo %JAVA_HOME% 

如果输出:

D:\environment\JDK\jdk-21.0.10 

则说明 JAVA_HOME 已正确生效。

4. 检查系统实际调用的 java 路径

执行:

where java 

正常情况下应返回:

D:\environment\JDK\jdk-21.0.10\bin\java.exe 

如果返回多个路径,说明系统中存在多个 Java 版本,且 Path 中可能存在重复或旧版本残留。


九、常见问题与排查思路

1. 配置完仍然提示 “java 不是内部或外部命令”

通常原因是:

  • Path 没有加入 %JAVA_HOME%\bin
  • 环境变量修改后没有重新打开 CMD
  • Path 写错,例如多了空格、路径不完整
  • JAVA_HOME 指向了错误目录

处理方式:

  • 重新检查 Path 是否包含 %JAVA_HOME%\bin
  • 关闭并重新打开命令行窗口
  • echo %JAVA_HOME% 验证变量是否生效

2. java 版本不是 JDK 21,而是旧版本

通常是系统里曾安装过旧版 Java,并且旧版本路径排在 Path 更靠前的位置。

排查方式:

  • 执行 where java 查看实际调用路径
  • 检查 Path 中是否存在旧 Java 路径,例如:
C:\Program Files\Java\jdk1.8.0_xxx\bin C:\Program Files (x86)\Common Files\Oracle\Java\javapath 

尤其是:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath 

这是 Oracle Java 安装器常见的自动注入路径,容易覆盖手动配置的版本。

解决方式:

  • 删除旧版本路径
  • 确保 %JAVA_HOME%\bin 排在 Path 的更前面

3. IDEA 能运行但 CMD 里不行

这种情况通常是:

  • IDEA 使用的是内部配置的 JDK
  • 系统环境变量没有生效或配置不正确

解决方式依旧是检查 Path 和 JAVA_HOME。


十、总结

在 Windows 上手动安装 JDK 21,真正必须配置的环境变量只有两项:

  1. JAVA_HOME:指向 JDK 根目录
  2. Path:加入 %JAVA_HOME%\bin

CLASSPATH 在 JDK 21 环境中不再需要配置,强行配置反而可能带来兼容性问题。

最终配置如下:

  • JAVA_HOME = D:\environment\JDK\jdk-21.0.10
  • Path += %JAVA_HOME%\bin

配置完成后,通过 java -versionjavac -versionwhere java 可以快速验证是否安装成功。

这套配置也是目前最通用、最标准、最符合工程实践的 JDK 环境配置方式。

Read more

开源又实用!CAM++系统为何值得你立刻尝试

开源又实用!CAM++系统为何值得你立刻尝试 1. 这不是另一个语音识别工具,而是一个真正能落地的说话人验证方案 你有没有遇到过这样的场景:需要确认一段录音是不是某位同事说的?想快速判断客服通话中两个声音是否来自同一人?或者在安防系统里,需要从一段监控音频中验证说话人身份?市面上很多语音识别工具只告诉你“说了什么”,但CAM++解决的是更关键的问题——“谁说的”。 CAM++不是语音转文字(ASR),也不是语音合成(TTS),它专注一个被长期低估却极其重要的能力:说话人验证(Speaker Verification)。简单说,它不关心内容,只认声音本身。就像指纹或虹膜识别一样,它把人的声纹变成一串可计算、可比对的数字特征。 更难得的是,这个系统完全开源、开箱即用、中文优化、部署极简。不需要GPU服务器,一台普通开发机就能跑;不需要写代码,点点鼠标就能完成专业级声纹分析;不需要调参经验,预设阈值开箱即准。它不像学术模型那样只停留在论文里,也不像商业API那样藏着高昂费用和隐私风险——它就安静地运行在你的本地机器上,数据不出门,结果自己掌控。 如果你正在寻找一个真正能放进工作流

By Ne0inhk
【工创赛2025-智能物流搬运塔吊方案开源(2分15秒)】西安理工大学工程训练中心

【工创赛2025-智能物流搬运塔吊方案开源(2分15秒)】西安理工大学工程训练中心

一、前言        时光荏苒,岁月如梭。三年的本科竞赛生涯随着工训赛的结束告一段落。竞赛路途中,受到了诸多大佬的帮助和鼓励。为了将这份开源精神传递下去,本团队全体成员一致决定无偿开源本项目机械设计图纸、PCB设计、电控代码、视觉代码及镜像文件、参赛文档以及其他有关设计资料。        请注意,本项目开源文件完全免费,内容遵循CC 4.0 BY-NC-SA版权协议,转载请给出适当的署名,不可用作商业用途,严禁倒卖,若广大网友发现以上行为,请第一时间与我取得联系。        在此,由衷感谢西安理工大学工程训练中心的各位老师对我们竞赛项目的悉心指导与鼎力支持。         这里放一张二代小车同堂的照片作为纪念 二、关于开源项目        运行视频:[开源]2025工训赛智能物流搬运,初赛第八,2分26秒_哔哩哔哩_bilibili        本项目参与了2025年中国大学生工程实践与创新能力大赛全国总决赛,初赛成绩仅1个二环,其余均为一环,总时间2分26秒。决赛由于准备不足以及现场不可预料的因素,成绩不算理想,最后总成绩为全国特等奖。

By Ne0inhk

Git 回退到某个 commit

Git 回退到某个 commit 文章目录 * Git 回退到某个 commit * **核心总结:如何选择?** * **方法一:`git reset` (重置)** * `git reset` 的三种模式: * **操作步骤示例 (使用 `--hard`)** * **方法二:`git revert` (撤销)** * **操作步骤示例** * **方法三:`git checkout` (检出)** * **操作步骤示例** * **离开 "detached HEAD" 状态** * **紧急救援:`git reflog`** 这里我会为你详细解释三种主要的方法: git reset、 git revert 和 git checkout。它们适用于不同的场景,理解它们的区别非常重要。 核心总结:如何选择?

By Ne0inhk
中国开源大模型霸榜全球:全球开源大模型排行榜前十五名,全部由中国模型占据

中国开源大模型霸榜全球:全球开源大模型排行榜前十五名,全部由中国模型占据

中国开源大模型霸榜全球:AI格局重塑与数学底层逻辑 2025 年 7 月,一则震撼全球 AI 社区的消息传来:全球开源大模型排行榜前十五名,全部由中国模型占据。这是中国开源力量的一次集中爆发,也是全球人工智能格局的一次历史性重塑。 近年来,中国在大模型领域的发展速度之快,令世界瞩目。从顶尖学术研究到产业落地,从企业巨头到社区开发者,中国 AI 在开源方向上实现了 “规模 + 性能 + 生态”三位一体的全面突破 。这不仅是一份成绩单,更是一场关于技术范式、产业竞争与全球格局的深刻变革。 文章目录 * 中国开源大模型霸榜全球:AI格局重塑与数学底层逻辑 * 一、全球霸榜:中国开源模型全面超越 * 二、五梯队划分:生态格局初步成型 * 三、前沿突破:DeepSeek 与 Qwen 的“双子星” * 四、智谱与月之暗面:创新驱动的“追赶者” * 五、开源生态:

By Ne0inhk