vs code必须手动配置java.home指向jdk根目录,否则jdt.ls无法启动;需先验证java -version和javac -version均正常,再在settings.json中写死路径(windows用双反斜杠,macos/linux用正斜杠),路径不得含bin或jre,且须重启vs code生效。

VS Code 本身不认 JDK,必须通过 Java 扩展显式指定路径;配错位置或格式,语言服务器(jdt.ls)就起不来,补全、跳转、Maven 项目识别全失效。
确认本地 OpenJDK 已安装且可用
别跳过这步——很多“配不成功”其实卡在 JDK 根本没装对。打开终端执行:
java -version<br>javac -version
必须同时输出版本号(如 openjdk version "17.0.9"),且 javac 不报 command not found。如果失败,先装 OpenJDK(推荐 Eclipse Temurin 或 Azul Zulu),并确保系统 PATH 包含 bin/ 目录。Windows 用户尤其注意:别只设 JAVA_HOME 却忘了把 %JAVA_HOME%in 加进系统 PATH。
在 VS Code 中手动指定 java.home
VS Code 的 Java 扩展不会自动继承系统 JAVA_HOME,它只看自己配置的 java.home。错误做法是依赖“自动检测”,正确做法是写死路径:
- 按
Ctrl + Shift + P,输入Preferences: Open Settings (JSON)回车 - 在
settings.json里添加一行(路径按你本地实际改):
"java.home": "C:\Program Files\Eclipse Adoptium\jdk-17.0.9+9"
注意:\ 是 Windows 必须的双反斜杠;macOS/Linux 用正斜杠,如 /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home。路径末尾不要加 /bin,必须指向 JDK 根目录。
改完保存,重启 VS Code。再按 Ctrl + Shift + P 输入 Java: Configure Java Runtime,左侧应显示你刚填的路径,且状态为 “Active”。
为什么 Java: Configure Java Runtime 里选不到你的 OpenJDK
这个命令面板里的列表只扫描几个固定目录(比如 C:Program FilesJava),如果你把 OpenJDK 解压到自定义路径(如 D:jdk emurin-17),它大概率不会自动出现。这时候强行点 “Add JDK” 也无效——因为 UI 界面不支持手动输入路径。唯一可靠解法就是上面一步:直接写死 java.home 到 settings.json。
常见坑:
-
java.home指向了 JRE 而不是 JDK(比如路径里有jre字样)→ 编译报错javac not found - 路径里有空格但没加引号 → VS Code 启动语言服务器失败,控制台报
Cannot find java binary - 用了符号链接(macOS/Linux 的
ln -s)→ jdt.ls 有时无法解析,建议用真实路径
多 JDK 版本共存时怎么切
项目需要 JDK 11,你本地却只有 JDK 17?别卸载重装。VS Code 支持 per-workspace 配置:
- 打开你的 Java 项目文件夹
- 在项目根目录建
.vscode/settings.json - 写入:
{<br> "java.home": "/path/to/jdk-11"<br>}
这样该工作区就强制用 JDK 11,全局 settings.json 里的 java.home 不会干扰它。Spring Boot 2.x 项目、老 Maven 插件经常卡在这一步。
最后提醒一个隐藏点:Java 扩展的语言服务器(jdt.ls)启动后,会在右下角状态栏显示当前使用的 JDK 版本。如果那里一直显示“Java Language Server is starting…”或者点开后是灰色的,八成是 java.home 路径错了,或者对应 JDK 的 bin/java 权限有问题(Linux/macOS 尤其注意)。











