应统一JDK版本:检查JAVA_HOME是否指向JDK根目录、PATH是否包含$JAVA_HOME/bin且优先级最高、java与javac版本是否一致;IDE和构建工具(Maven/Gradle)需单独配置匹配的SDK及编译级别。

查JDK版本出错,通常不是JDK没装好,而是命令、路径或环境变量没对上。关键要同时验证 java(运行时)、javac(编译器)和 JAVA_HOME 三者是否指向同一套完整JDK,缺一不可。
命令执行失败:“'java' 不是内部或外部命令”
这是最典型的路径缺失问题,系统根本找不到java可执行文件。
- 先确认 JAVA_HOME 是否已设置,且值是JDK根目录(如
C:\Program Files\Java\jdk-17或/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),不能是 bin 子目录,也不能是 JRE 路径 - 检查 PATH 是否包含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(macOS/Linux)
- Windows用户修改环境变量后,必须重启命令行或终端窗口;VS Code内置终端也需完全关闭再重开
- macOS用户若用zsh(默认),请编辑
~/.zshrc并执行source ~/.zshrc生效
版本显示不一致:java -version 正常,但 javac -version 报错
说明系统里可能只装了JRE(仅含运行环境),没有完整JDK(含编译器)。
- 运行
where java(Windows)或which java(macOS/Linux),看路径是否落在jre\bin或系统自带位置(如/usr/bin/java),这类通常是JRE - 前往 Eclipse Temurin 或 Oracle 官网下载并安装完整JDK
- 安装后重新设置 JAVA_HOME 指向新JDK根目录,并更新 PATH
多个JDK共存导致版本混乱
机器上装了JDK 8、11、17,但 java 和 javac 实际调用的却是不同版本,IDE或构建工具行为异常就源于此。
- 分别运行
java -version和javac -version,对比输出是否一致 - 用
where java && where javac(Windows)或which java && which javac(macOS/Linux)查看实际调用路径 - 确保 JAVA_HOME 明确指向你希望默认使用的JDK,PATH中不要混入其他JDK的 bin 路径
- IDE(如IntelliJ、VS Code)需单独配置SDK,不依赖系统环境变量,务必在项目设置里核对
注册表或系统残留干扰(Windows特有)
旧版Java卸载不干净,残留注册表项可能导致 java -version 报错“Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'”。
- 按
Win + R输入regedit打开注册表编辑器 - 定位到
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment,检查右侧CurrentVersion对应的子项是否存在且路径有效 - 若对应JDK已卸载,可删除该子项(操作前建议备份注册表)
- 也可直接使用
java -version失败时提示的路径,手动检查该目录下是否存在java.dll

















