VSCode运行Spring Boot需java.home、Spring Boot Tools和Maven三者严格对齐,缺一不可;java.home须手动指定JDK 17+根目录(非bin),Spring Boot Tools须由Red Hat发布并启用,项目必须打开含pom.xml的根目录且被识别为Spring Boot项目。

java.home、Spring Boot Tools 和 Maven 三者严格对齐,缺一不可。配错一个,就会卡在“找不到主类”“断点不生效”“依赖红波浪线”上。
java.home 必须手动指定 JDK 根目录(不是 bin)
终端里 java -version 输出 17 或 21,不代表 VSCode 就能用它。VSCode 启动方式(桌面图标 vs 终端执行 code .)直接影响 JAVA_HOME 是否加载。
- 按
Ctrl+Shift+P→ 输入Java: Configure Java Runtime→ 在Installed JREs下点击+→ 选 JDK 根目录(如C:\jdk-17),不是bin子目录 - Windows 用户检查系统
JAVA_HOME:值末尾不能带反斜杠(\jdk-17\❌,\jdk-17✅) - 路径含空格或中文(如
C:\Program Files\)易导致识别失败,建议重装到纯英文无空格路径(如C:\jdk-17) - 配置后必须重启 VSCode 窗口(不是仅重载),打开任意
.java文件,右下角状态栏应显示Java 17;若显示Java (unresolved),说明路径未生效
Spring Boot Tools 必须启用且单独验证
很多人装了 Spring Boot Extension Pack 就以为够了,但真正提供 application.yml 补全、Actuator 端点识别、Dashboard 视图的是其中的 Spring Boot Tools 子模块——它必须单独启用且版本匹配。
- 在扩展面板搜索
Spring Boot Tools,认准发布者是Red Hat,安装后点击Reload - 打开含
pom.xml的项目根目录,等待右下角出现Spring Boot project detected;没出现?说明项目未被识别,后续所有功能(如右键 Run)都无效 - 如果 Dashboard 不显示模块:点击左侧
Spring Boot图标(叶子徽标)→ 右键空白区 →Refresh Spring Boot Projects - 别只装
Language Support for Java™ by Red Hat,必须搭配Extension Pack for Java(含Debugger for Java和Maven for Java)——漏掉任一,会导致断点不命中、pom.xml不解析
launch.json 启动配置比右键 Run 更可靠
图形化右键菜单看似方便,但传参能力弱、环境隔离差,且容易因 projectName 与 pom.xml 中不一致而静默失败。真要稳定运行,必须手写 .vscode/launch.json。
-
mainClass必须写全限定名,如com.example.demo.DemoApplication,包名错一个字母就启动失败 - 不要依赖自动补全的
args传 profile,改用env字段:"env": {"SPRING_PROFILES_ACTIVE": "dev"},因为 Spring Boot 读取 profile 优先级:系统变量 > 命令行参数 > 配置文件 - 多 module 微服务中,每个子模块需单独配
launch.json,cwd字段必须设为该子模块的绝对路径,不能用${workspaceFolder}—— 否则 JVM 加载不到子模块的application.yml - 若要用 Maven 插件启动(如
spring-boot:run),type改成maven,projectName填子模块artifactId,否则报Could not resolve dependencies
微服务多 module 场景下 Spring Boot Tools 识别失效
VSCode 默认只把含 pom.xml 的文件夹当“项目”,但微服务是多 module 结构:父 pom 下有 service-registry、api-gateway、user-service 等子模块。插件不自动递归扫描子目录,导致 Dashboard 里只显示父工程,子模块没图标、没右键 Run 选项。
立即学习“Java免费学习笔记(深入)”;
- 必须手动打开每个子模块的根目录(即含自己
pom.xml的那层),分别等右下角出现Java 17 + Spring Boot project detected - 确保业务模块(如
user-service)是<packaging>jar</packaging>;若为<packaging>pom</packaging>,VSCode 会跳过识别 - 删掉所有子模块下的
.vscode/文件夹,再逐个重开,避免旧缓存干扰 - Lombok + Spring Cloud 注解处理器失效(
@Data不生成 getter/setter,@EnableEurekaClient标红)常是同一根源:Lombok 注解处理器没加载 JDK 工具类,而 Spring Cloud 的@Enable*系列注解依赖相同的 annotation processing pipeline
launch.json 里 cwd 没写死绝对路径——这些地方一松懈,问题就卡住不动。



















