最可靠做法是重装jdk至纯英文无空格无括号路径(如c:\jdk17),同步修正java_home和path,重启命令行及ide并手动指定新jdk路径。

JDK 安装路径中包含特殊字符(如括号 ()、空格、中文、&、!、^ 等)会直接导致命令行工具失效、IDE 识别失败、构建脚本报错,这不是配置疏忽,而是 Windows 命令解析器和 Java 工具链共同作用下的确定性故障。
为什么特殊字符会让 JDK 失效
Windows 的 cmd.exe 把括号、&、^ 等当作语法控制符;空格被默认用作参数分隔符;中文字符在 JVM 路径转 URL(如 file://)时易触发 URISyntaxException。这些不是“偶尔出问题”,而是只要路径含上述字符,java -version、javac、Maven、Gradle 就大概率报错或静默失败。
最可靠的做法:重装到干净路径
不要尝试打补丁或加引号绕过——这些方法在复杂场景(如 CI/CD、IDE 插件调用、Docker 构建)中极易失效。正确做法是:
- 彻底卸载当前 JDK,包括删除安装目录、控制面板条目、注册表
JavaSoft及相关节点 - 重新安装时,自定义路径为纯英文、无空格、无括号、无特殊符号,例如:
C:\jdk17或D:\java\jdk21 - 路径层级尽量浅,避免嵌套过深(如不用
C:\dev\tools\jdk\21.0.1)
环境变量配置必须同步修正
路径改了,环境变量也得严格匹配:
-
JAVA_HOME值填顶层 JDK 目录,结尾不加反斜杠,例如:C:\jdk17 -
PATH中添加%JAVA_HOME%\bin,并确保它排在最前面 - 所有已打开的命令行窗口必须关闭,再新开一个验证
IDE 和构建工具也要手动指定
IntelliJ、Android Studio、VS Code 不会自动继承新环境变量,需主动设置:
- 项目 SDK 配置里,浏览并指向新的 JDK 根目录(如
C:\jdk17),不是bin子目录 - Maven/Gradle 的配置文件(如
settings.xml或gradle.properties)中,若有硬编码的java.home,一并更新 - 检查 IDE 启动脚本(如
idea64.exe.vmoptions)是否含旧路径引用











