launch.json 中 mainClass 必须为全限定名(如"com.example.app.Main"),非文件名或简单类名;classpath 应用 projectName 而非手动配置;Spring Boot 调试需设 console 为 "integratedTerminal" 并补 env;多配置时须确认激活项,多根工作区需各子目录独立配置。

launch.json 里 mainClass 必须是全限定名,不是文件名
Java 调试启动失败最常见的原因是把 Main.java 或 Main 当成 mainClass 值填进去。VS Code 的 Java 调试器不认源文件名,也不认简单类名,只认 JVM 加载时用的全限定类名(即带包路径的)。
比如你的类定义是 package com.example.app; public class Main { ... },那 mainClass 就得写成 "com.example.app.Main",少一个点、大小写错、漏包名,都会报 ClassNotFoundException 或直接提示 “No main class found”。
- 检查
.java文件顶部的package声明,逐级拼上去 - 如果没写
package,那就是默认包,mainClass直接填"Main"(但不推荐,默认包在模块化项目里会被拒绝) - 别从
src目录结构“猜”路径——src/com/example/app/Main.java对应的仍是"com.example.app.Main",不是"src.com.example.app.Main"
classpath 配置不生效?优先用 projectName 而非手动写 classpath
手动在 launch.json 里填 classpath 字段,几乎总是错的:路径容易写死、IDE 编译输出目录可能变、Maven/Gradle 依赖不会自动包含。VS Code 的 Java 扩展(Extension Pack for Java)其实会自动识别当前打开的 Java 项目结构,并基于 projectName 推导出完整 classpath。
正确做法是删掉手写的 classpath 字段,改用 projectName 指向你工作区里的项目名(即 .projectName 文件内容,或 Maven 的 artifactId,或 Gradle 的 rootProject.name)。
立即学习“Java免费学习笔记(深入)”;
-
projectName值必须和 VS Code 左下角 Java 项目面板里显示的名称**完全一致**(区分大小写) - 如果没看到项目名,说明 Java 扩展没成功导入项目——先确认
pom.xml或build.gradle在根目录,再按Ctrl+Shift+P→ “Java: Reload Projects” - 手动配
classpath只在极少数场景有用:比如调试一个脱离构建工具的裸.class文件,且你知道确切输出路径
调试 Spring Boot 启动类,console 和 env 得配合用
Spring Boot 应用启动慢、卡在 banner 或报 Unable to start embedded Web server,往往不是代码问题,而是调试配置没模拟真实运行环境。VS Code 默认用 integratedTerminal 启动,但 Spring Boot 依赖很多环境变量(如 SPRING_PROFILES_ACTIVE)和控制台交互能力(比如等待 DevTools 热替换就绪)。
- 把
console设为"integratedTerminal",而不是默认的"internalConsole"—— 后者不支持 ANSI 颜色、无法响应 Ctrl+C、Spring Boot 的 banner 会乱码 - 用
env字段补关键环境变量:"SPRING_PROFILES_ACTIVE": "dev"、"JAVA_HOME": "/path/to/jdk-17"(确保和项目编译 JDK 一致) - 如果用了 Lombok,记得在
vmArgs里加-javaagent:path/to/lombok.jar,否则@Data类字段为空
为什么改了 launch.json 还不生效?检查 configurations 数组和当前激活配置
VS Code 允许一个 launch.json 里存多个调试配置,但它只会运行你当前选中的那个。很多人改了某个配置,却没在右上角调试面板里切换到它,结果以为配置无效。
另一个隐蔽问题是:如果你用的是多根工作区(multi-root workspace),每个文件夹可能有自己独立的 .vscode/launch.json,而 VS Code 默认只读最外层或第一个文件夹下的配置。
- 调试前务必看右上角“运行和调试”面板顶部,确认下拉框里选中的是你刚改的那个配置名
- 按
Ctrl+Shift+P→ “Debug: Open Configuration”,确认打开的是你预期项目的launch.json(路径要对) - 多根工作区下,建议在每个子文件夹里单独配
.vscode/launch.json,并统一命名(如"Launch App"),避免混淆
Java 调试配置真正难的不是字段怎么填,而是 VS Code 的 Java 扩展、底层 JDT LS、项目构建状态这三层之间存在隐式依赖——改完 launch.json 后,经常需要先保存、再重载 Java 项目、最后重启调试会话,缺一不可。










