VS Code调试Java测试用例报错:Failed to launch debuggee VM
解决VS Code Java测试用例调试报错:Failed to launch debuggee VM. Reason: VM exited with status 1
问题关键信息
报错现象
- 测试用例可正常运行,但单步调试时弹出错误:
Failed to launch debuggee VM. Reason: VM exited with status 1 - TEST RESULTS窗口无输出:
The test run did not record any output. - DEBUG CONSOLE提示JDWP权限问题:
ERROR: JDWP unable to get necessary JVMTI capabilities. - 语言服务日志显示测试代码不在构建路径:
_/traceprofiler/src/test/java/com/xx/xx/traceprofiler [in dtxsql-java_92d3a23d] is not on its project's build path
当前配置(launch.json)
{ "version": "0.2.0", "configurations": [ { "type": "java", "name": "Launch TraceProfiler", "request": "launch", "mainClass": "com.xx.xx.traceprofiler.TraceProfiler", "args": [ "trace.qoe.profiler.log" ], "projectName": "traceprofiler", "cwd": "${workspaceFolder}${pathSeparator}traceprofiler" } ] }
解决步骤
1. 修复测试代码的构建路径
- Maven项目:确认
src/test/java目录被正确识别为测试源目录。VS Code中通过「Project Manager for Java」查看项目结构,若该目录未标记为测试源,右键目录选择「Add Folder to Java Source Path」并指定为Test Source Folder。 - 普通Java项目:打开「Java Projects」视图,在项目的「Source Paths」中添加
src/test/java到测试源路径。
2. 创建测试专用的调试配置
当前launch.json是针对主程序启动的配置,调试JUnit测试需要单独配置:
- 打开「Run and Debug」面板,点击「create a launch.json file」,选择「Java」→「JUnit Test」。
- 生成适配项目的配置示例:
{ "version": "0.2.0", "configurations": [ { "type": "java", "name": "Debug Test: ProgNodeTest", "request": "launch", "mainClass": "org.junit.runner.JUnitCore", "args": [ "com.xx.xx.traceprofiler.ProgNodeTest" ], "projectName": "traceprofiler", "vmArgs": "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005" } ] }
也可直接在测试代码中右键测试方法progNodeShouldBeInitialized,选择「Debug Test」,VS Code会自动生成临时调试配置。
3. 排查JDWP权限问题
- 确保使用JDK 11+版本,避免JDK 8及以下的老旧版本,保证与VS Code Java扩展兼容。
- 检查是否有其他进程占用调试端口(默认5005):Linux/macOS用
lsof -i :5005,Windows用netstat -ano | findstr :5005,结束占用进程后重试。 - 远程SSH环境下,确认端口转发配置正确,调试端口可正常访问。
4. 清理重建项目
- Maven项目执行
mvn clean compile test命令,清理旧构建文件并重新编译测试代码。 - VS Code中执行「Java: Clean Java Language Server Workspace」命令,重启VS Code后让语言服务重新加载项目配置。
内容的提问来源于stack exchange,提问作者Russ Petersen
相关产品推荐
相关产品推荐

