社交媒体

环境变量配置保姆级教程(Win/Mac)

环境变量配置保姆级教程(Win/Mac)

钩子

今天的报错,你大概率也见过:

C:\Users\你> javac -version
'javac' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

image-Kium.png

奇怪的是:JDK 明明装了,安装目录里也能看到 javac.exe,命令行就是找不到它。

不是你装错了,是系统根本不知道去哪找。 今天这篇把原理和步骤一次讲透,Win 和 Mac 都有,照着做 10 分钟搞定。

01 你敲 javac 的时候,系统在干什么

先搞懂原理,配置就是水到渠成的事。

你在命令行敲 javac,系统不会全盘扫描硬盘,它的查找顺序是:

  1. 先看当前目录有没有 javac.exe —— 没有
  2. 再去 Path 环境变量里登记的目录一个个找 —— 找到了就执行,全找完还没有,就报开头那个错

所以"javac 不是内部或外部命令"翻译成人话就是:Path 里没有登记 JDK 的 bin 目录,系统找遍了你告诉过它的所有地方,都没有。

02-Path查找原理图.png

修复思路就一句话:把 JDK 的 bin 目录(javac.exe 所在的文件夹)登记到 Path 里。 配置过程全是围绕这一句话。

02 Windows 配置:两步 + 一次验证

第 1 步:新建 JAVA_HOME

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

变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk-21

变量值填你自己的 JDK 安装目录(到 jdk 这一层,不带 \bin,末尾不加分号)。

image-wDAi.png

第 2 步:编辑 Path

在"系统变量"里找到 Path → 编辑 → 新建一条:

%JAVA_HOME%\bin

一路确定,配完了。

image-gSpK.png

第 3 步:验证(关键!)

重新打开一个 CMD 窗口,输入:

javac -version
java -version

两条都能输出版本号,成了。

640 (2).png

为什么不直接把 bin 目录写进 Path,非要绕 JAVA_HOME?
因为换 JDK 版本时(比如 21 换 23),只改 JAVA_HOME 一处就行,Path 里的 %JAVA_HOME%\bin 永远不用动。这是给自己留的后路。

03 Mac 配置:改一个文件

Mac 的 JDK 默认装在 /Library/Java/JavaVirtualMachines/ 下,命令行同样找不到,同样要"登记"。

第 1 步:打开配置文件(Mac 现在默认终端是 zsh)

open -e ~/.zshrc

文件不存在就先 touch ~/.zshrc 再打开。

第 2 步:加两行

export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH

第一行用系统自带的查询工具自动找到 JDK 安装位置,比手写路径稳——以后升级 JDK 都不用改。

第 3 步:保存后让配置生效

source ~/.zshrc

然后验证:

javac -version

04 四个坑,一个一个数

坑 1:配完不重开窗口,白配

环境变量是窗口打开时读入的。你在一个已经开着的 CMD 里输 javac,用的还是旧配置——必须开新窗口。这是"我明明配了为什么还报错"的第一大原因。

坑 2:末尾多写了一个分号

变量值:C:\Program Files\Java\jdk-21;

就这最后一个分号,会让 Path 解析出一个空目录,轻则警告,重则后面所有路径失效。JAVA_HOME 末尾不要任何符号。

坑 3:中文分号、中文引号

从网页复制配置值时最容易中招:; 和 ; 长得几乎一样,系统只认英文的。配置不生效时,把可疑字符删掉手动重敲一遍。

坑 4:老教程让你配 ClassPath,现在基本不用

以前(JDK 1.4 及更早)运行程序要手工配 ClassPath 告诉 JVM 去哪找类。JDK 5 之后默认会找当前目录,配了反而容易出错。网上还让你配 .;%JAVA_HOME%\lib 的教程,直接跳过那一步。

02-三个环境变量分工图.png

橙码酱,分享更有用的技术知识,助你成为更优秀的开发者。