尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【VS Code】 Spring Boot `main` 方法不显示 Run | Debug 经验总结
VS Code Spring Bootmain方法不显示 Run | Debug 经验总结适用场景内网隔离环境无法访问repo.maven.apache.org通过内部 Nexus/Maven 私服拉取依赖。背景条件本文假设以下前置条件已满足VS Code 已安装Extension Pack for Java包含Language Support for Java (Red Hat)、Debugger for Java、Maven for Java、Project Manager for Java、Test Runner for JavaVS Code 已安装Spring Boot Extension Pack包含Spring Boot Tools、Spring Initializr、Spring Boot Dashboard以上扩展均已启用且版本正常无需重新安装或排查扩展问题JDK 已正确配置JAVA_HOME指向有效路径Maven 已正确安装命令行mvn --version可正常执行术语解释术语全称含义JDT LSJava Development Tools Language ServerEclipse 基金会维护的 Java 语言服务器VS Code 的Language Support for Java (Red Hat)扩展在底层运行它负责代码补全、编译诊断、项目构建等所有 Java 语言功能。它运行在独立进程中和命令行mvn是两个完全不同的进程M2EMaven to EclipseEclipse 生态的 Maven 集成组件JDT LS 通过它来读取pom.xml、解析模块结构和下载依赖。它有自己的 Maven 依赖解析逻辑CodeLens—VS Code 在代码行上方显示的嵌入式快捷操作如main方法上的 Run关键文件路径速查排查过程中涉及的所有文件及其在 Windows 上的绝对路径%USERPROFILE%即C:\Users\当前用户名文件路径用途项目根pom.xml项目根目录\pom.xmlMaven 项目描述文件用户级 Maven 配置%USERPROFILE%\.m2\settings.xml命令行mvn读取的用户配置可能不存在需手动创建全局 Maven 配置Maven安装目录\conf\settings.xmlMaven 安装时自带的全局配置本地 Maven 仓库%USERPROFILE%\.m2\repository所有 Maven 依赖的本地缓存目录VS Code 用户设置%APPDATA%\Code\User\settings.jsonVS Code 全局用户设置VS Code 工作区设置项目根目录\.vscode\settings.json项目级 VS Code 设置可能不存在JDT LS 工作区缓存%APPDATA%\Code\User\workspaceStorage\hash\redhat.javaJDT LS 项目模型缓存损坏时需删除现象主要现象SpringBootApplication类的main方法上方不显示Run | DebugCodeLens。常见伴随现象可能同时出现若干个伴随现象说明所有或部分pom.xml报红波浪线表示 JDT LS 无法解析 Maven 依赖Java 源文件 import 语句报红如import org.springframework...被标记为 “The import cannot be resolved”状态栏长时间显示Importing Maven project(s)或Building workspace项目导入卡住或异常缓慢Spring Boot Dashboard中不显示当前项目项目未被识别为 Spring Boot 项目JAVA PROJECTS面板中项目为空或无内容JDT LS 未建立项目模型输入代码时无自动补全或跳转语言服务功能全面失效CtrlShiftP→Java: List All Java Source Paths为空项目源码路径未被正确识别关键判断依据如果命令行mvn compile能成功但 VS Code 内报错说明 JDT LS 和 Maven CLI 之间存在隔离问题在 JDT LS 一侧。根因分析根据社区大量案例和实际排障经验此类问题通常由以下几个原因引发按概率排序原因 1内网特化JDT LS 未读取 settings.xml mirror → 直连 Maven Central 失败 → 缓存阻断占比最高内网无法访问 Maven Central → JDT LS 解析 POM 时直连 repo.maven.apache.org 失败 → 在本地仓库写入 .lastUpdated 缓存阻断文件 → 即使 POM 文件存在也标记为 present, but unavailable → 项目模型损坏module does not exist → CodeLens 消失本质JDT LS 内嵌的 Maven 解析器M2E默认不读取 Mavensettings.xml。修复方式是通过 VS Code 的java.import.maven.userSettings配置项显式指定settings.xml路径让 JDT LS 读取其中的mirror配置。一旦正确配置并清除旧缓存JDT LS 即可通过内网 mirror 正常解析依赖不需要修改pom.xml。原因 2通用VS Code 打开的不是正确的项目根目录VS Code 要求将包含根pom.xml的目录作为工作区根目录打开。常见错误打开的是父目录如打开了整个workspace文件夹而非workspace/project/在多模块项目中打开了子模块目录而非根目录使用File → Open File打开了单个 Java 文件而非Open Folder原因 3通用Maven 多模块项目中子模块未被正确识别典型场景根pom.xml的modules中声明了子模块但子模块目录不存在或名称不匹配导致整个 reactor 构建失败JDT LS 无法建立项目模型。原因 4通用java.configuration.runtimes中 JDK 版本与pom.xml中java.version不匹配或 JDK 路径失效%APPDATA%\Code\User\settings.json中配置的java.configuration.runtimes与实际使用的 JDK 不一致时会导致编译错误进而影响项目导入。原因 5通用JDT LS 工作区缓存损坏中途关闭 VS Code、磁盘空间不足、或 Maven 导入过程被异常中断可能导致%APPDATA%\Code\User\workspaceStorage\hash\redhat.java中的缓存不一致。原因 6偶发CodeLens 开关关闭%APPDATA%\Code\User\settings.json中java.debug.settings.enableRunDebugCodeLens:true常见错误示例错误 1parent POM “present, but unavailable”内网典型错误全量错误信息VS Code输出面板 →Language Support for JavaProject build error: Non-resolvable parent POM for groupId:artifactId:version: The following artifacts could not be resolved: org.springframework.boot:spring-boot-starter-parent:pom:X.X.X (present, but unavailable): failed to transfer from https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced. Original error: 这是在主机名解析时通常出现的暂时错误 (repo.maven.apache.org)关键词present, but unavailable、failed to transfer、cached in the local repository排查路径打开%USERPROFILE%\.m2\repository\org\springframework\boot\spring-boot-starter-parent\版本号若存在*.lastUpdated文件说明 JDT LS 上次解析失败并写入了阻断标记即使该目录下*.pom正常存在.lastUpdated也会导致 JDT LS 将其视为不可用错误 2JDT LS 项目模型损坏全量日志VS Code输出面板 →Language Support for JavaError: module-name does not exist Java Model Exception: Error in Java Model (code 969): module-name does not exist排查路径此错误发生在 JDT LS 尝试获取模块的 main class 列表时根因是上一步 POM 解析失败导致 JDT LS 工作区缓存中存储的项目模型不完整查看当前工作区对应的 hash打开%APPDATA%\Code\User\workspaceStorage依次检查各子目录下的workspace.json找到包含当前项目路径的那个解决方案方案 A内网特化对应原因 1让 JDT LS 读取 settings.xml mirror 配置适用条件命令行mvn能正常编译但 VS Code 内 pom.xml 报红、错误日志中出现failed to transfer from https://repo.maven.apache.org。关键点JDT LS能够读取settings.xml但需要1通过java.import.maven.userSettings明确指定路径2工作区缓存未被上次失败污染。问题根源在于 JDT LS 的默认行为是不读取settings.xml但通过配置可以让它读取。修复后不需要在pom.xml中加任何仓库声明。Step 1— 创建或确认用户级 Maven 配置操作文件%USERPROFILE%\.m2\settings.xml?xml version1.0 encodingUTF-8?settingsxmlnshttp://maven.apache.org/SETTINGS/1.2.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsdmirrorsmirroridnexus-internal/idname内网 Maven Mirror/nameurlhttp://内网Nexus地址:端口/repository/maven-public//urlmirrorOf*/mirrorOf/mirror/mirrors/settings如果公司已有全局conf/settings.xml且中有内网 mirror也可直接把该文件复制到此路径。Step 2— 在 VS Code 中指定 settings.xml 路径操作文件%APPDATA%\Code\User\settings.jsonjava.import.maven.userSettings:%USERPROFILE%\\.m2\\settings.xml注意如果配置后仍无效说明 JDT LS 工作区缓存中残留了上次失败的项目模型必须执行 Step 3 清除缓存。Step 3— 清除阻断缓存 JDT LS 缓存然后重建详见方案 E删除%USERPROFILE%\.m2\repository中相关.lastUpdated文件执行Java: Clean Java Language Server Workspace或手动删除%APPDATA%\Code\User\workspaceStorage\hash\redhat.java完全退出 VS Code重新启动后用File → Open Folder打开项目根目录备选方案不推荐如果上述配置始终不生效可在项目根目录\pom.xml中直接追加repositories和pluginRepositories声明内网地址。此做法的缺点是侵入项目文件、影响团队协作仅建议作为最后手段。方案 B通用对应原因 2确认工作区根目录正确关闭 VS Code 中当前打开的所有文件夹用File → Open Folder重新打开包含根pom.xml的目录不要打开父目录或子模块目录如果项目包含多个独立子工程考虑使用.code-workspace多根工作区文件方案 C通用对应原因 3验证 Maven 多模块结构完整命令行执行mvn validate确认 reactor 中所有模块都BUILD SUCCESS确认根pom.xml的modules中列出的目录全部存在且包含子pom.xml如果有多余的模块声明或已删除的模块残留从modules中移除方案 D通用对应原因 4验证 JDK 配置检查%APPDATA%\Code\User\settings.json中java.configuration.runtimes配置java.configuration.runtimes:[{name:JavaSE-17,path:JDK 17 安装路径,default:true}]同时检查项目根目录\pom.xml中java.version与 JDK 版本匹配。运行mvn -version确认输出中的 JDK 版本与配置一致。方案 E通用对应原因 5/6执行缓存清理 重建Step 1— 清除.lastUpdated阻断缓存# 替换版本号为实际值Remove-Item-Recurse-Force $env:USERPROFILE\.m2\repository\org\springframework\boot\spring-boot-starter-parent\版本号Set-Location项目根目录 mvn dependency:resolve-UStep 2— 清除 JDT LS 工作区缓存二选一方式一VS Code 命令推荐CtrlShiftP→Java: Clean Java Language Server Workspace→ 选择Reload and delete方式二手动$wsDir$env:APPDATA\Code\User\workspaceStorageforeach($dinGet-ChildItem$wsDir-Directory){$jsonJoin-Path$d.FullNameworkspace.jsonif((Get-Content$json-Raw)-like*项目文件夹名*){Remove-Item-Recurse-Force(Join-Path$d.FullNameredhat.java)}}Step 3— 重启 VS Code完全退出 VS Code不光是Developer: Reload Window重新启动用File → Open Folder打开项目根目录等待状态栏Importing Maven project(s)→Building workspace全部完成打开*Application.javamain上方应出现Run | Debug综合排查流程1. 确认 VS Code 扩展已装 ↓ 已装 2. mvn compile 是否成功 ┌─ 否 → 修 Maven / JDK / 网络 / 仓库配置 │ └─ 是 → 3. pom.xml 是否报红 ├─ 是内网 → 方案 A配 settings.xml userSettings → 清缓存 │ └─ 否 → 4. 方案 B检查工作区根目录是否正确 ↓ 5. 方案 C检查多模块结构 ↓ 6. 方案 D检查 JDK 配置 ↓ 7. 方案 E清缓存 → 重启 → 验证自检清单Spring Boot、Java 相关 VS Code 扩展已完整安装命令行mvn compile在项目根目录下能成功执行VS Code 以File → Open Folder打开的是包含根pom.xml的目录%APPDATA%\Code\User\settings.json中enableRunDebugCodeLens为true%APPDATA%\Code\User\settings.json中java.configuration.runtimesJDK 路径正确内网环境%USERPROFILE%\.m2\settings.xml存在且有mirror配置内网环境%APPDATA%\Code\User\settings.json中java.import.maven.userSettings已指向上述 settings.xml%USERPROFILE%\.m2\repository中无对应.lastUpdated阻断文件执行过Java: Clean Java Language Server Workspace等待状态栏 “Building workspace” 完全结束后再检查*Application.java
RELATED

相关推荐

千笔与锐智AI论文写作工具对比及专科生应用指南

千笔与锐智AI论文写作工具对比及专科生应用指南

1. 论文写作工具对比:千笔与锐智AI的核心差异作为一名在学术写作领域深耕多年的研究者,我实测过市面上绝大多数论文辅助工具。最近两款专业级AI论文软件——千笔和锐智AI在学生群体中引发热议,特别是对专科生这类学术基础相对薄弱的群体。今天…

📅 2026/9/8 15:47:56
电阻温度特性解析:从原理到工程实践的温度稳定性设计

电阻温度特性解析:从原理到工程实践的温度稳定性设计

1. 项目概述:从“冷冰冰”的阻值到“有温度”的电路电阻,在绝大多数电子工程师和爱好者的印象里,就是一个固定不变的参数。我们根据欧姆定律计算分压、限流,默认它在-40C到85C的工作范围内,阻值纹丝不动。但现实往往比…

📅 2026/9/11 13:31:58
Flink JDBC Sink 生产级深度实战:从批量写入、幂等恢复到 XA Exactly-Once

Flink JDBC Sink 生产级深度实战:从批量写入、幂等恢复到 XA Exactly-Once

Flink JDBC Sink 生产级深度实战:从批量写入、幂等恢复到 XA Exactly-Once 面向 Kafka → Flink → MySQL 实时链路,系统讲清 JDBC Sink 的执行机制、交付语义、表结构设计、批量参数、Checkpoint、XA 事务、Kubernetes 部署、Nacos 配置、监控告警与故障演练。 适用基线:Ap…

📅 2026/9/11 10:08:13
MORE NEWS

更多资讯

📰

Hasura GraphQL Engine 元数据乐观并发控制(Optimistic Concurrency Control)设计解析

后端API网关数据库GraphQL 【免费下载链接】graphql-engine Blazing fast, instant realtime GraphQL APIs on all your data with fine grained access control, also trigger webhooks on database events. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-…

📰

Windows Python环境搭建:Miniconda安装配置与虚拟环境管理指南

1. 为什么我劝Windows用户从Miniconda开始搭Python环境刚接触Python的朋友,十个里有八个在环境配置这一步卡住过。装完Python本体,pip装包报错,版本冲突,A项目要numpy 1.20,B项目要numpy 1.24,装来装去把系…

📰

降ai率工具推荐2026:按学校用知网维普万方分类实测9款降AIGC软件,AIGC检测一次合格!

降ai率工具推荐2026:按学校用知网维普万方分类实测9款降AIGC软件,AIGC检测一次合格! 学校用万方的同学请注意,这篇是给你们写的,起因是一位行政管理本科的学妹,毕业论文12000字,案例分析整章标…

📰

十大免费降ai软件2026实测:降AI率效果、免费字数、重复率不反涨逐款对比,知网AIGC检测合格推荐!

十大免费降ai软件2026实测:降AI率效果、免费字数、重复率不反涨逐款对比,知网AIGC检测合格推荐! 先讲一个刚结束的故事,主角是我表弟,审计学专科,毕业论文9600字,学校用知网,需求分…

📰

笔记本HDMI外接显示器不亮?从物理层到BIOS的完整排查指南

1. 从“未检测到其他显示器”说起:问题到底出在哪一层笔记本插上HDMI线,屏幕却黑着,系统右下角还弹一句“未检测到其他显示器”——这个场景我遇到过太多次了,身边同事、朋友、甚至我自己换新本子的时候都踩过。表面上看是“显示器…

📰

CI 里跑 Jev 决策,TaoToken 发 Key 给流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬