VS Code / Lingma AI IDE Java 开发攻略手册
一、IDE 介绍
VSCode 崛起后,Java 开发生态迅速成熟,尤其是 AI IDE 的出现,使得 VSCode 成为 Java 开发的主流选择之一。 目前市面上大部分 AI IDE(Cursor、Lingma、Antigravity、TRAE 等)均基于 VSCode 开源框架构建。
优势:
在 Windows 环境下使用 VS Code 进行 Java 开发的完整配置流程。涵盖开发者模式开启、Git Bash、多版本 JDK 管理(软链接切换)、Maven 安装及环境变量配置。详细列出了推荐的 VS Code 插件清单及其功能说明,包括通用工具、Git 管理、Java 核心、前端支持等。提供了详细的用户级设置 JSON 配置示例,涉及编辑器、终端、Java 构建、调试及 AI 助手设置。此外还包含项目导入、工程创建、调试运行、单元测试及常用快捷键速查表,并附带常见问题排查方案,旨在帮助开发者建立统一、高效的 Java 开发工作空间。
VSCode 崛起后,Java 开发生态迅速成熟,尤其是 AI IDE 的出现,使得 VSCode 成为 Java 开发的主流选择之一。 目前市面上大部分 AI IDE(Cursor、Lingma、Antigravity、TRAE 等)均基于 VSCode 开源框架构建。
优势:
下表为主流 AI IDE 对比:
| 名称 | 出品 | 亮点 | 缺点 | 模型 |
|---|---|---|---|---|
| Lingma AI IDE | 阿里 | 与通义 Qianwen 系列紧密集成、企业级 AI 编程体验 | 市场资源较新,资料较少 | 通义 Qianwen(Qwen3 等)为主模型 |
| Cursor | Anysphere | 深度理解整个代码库、支持多任务 Agent & Composer 模式 | 高阶功能付费、有用户反馈稳定性/bug 争议 | 自研 Tab 模型 + 支持 GPT、Claude 等多模型 |
| Antigravity IDE | 真正的 Agent-First 开发、多 Agent 协作、浏览器/终端自动执行 | 仍处于预览期,部分功能体验不完善 | 以 Gemini 3 Pro 为核心,多模型切换支持 | |
| CodeBuddy IDE | 腾讯 | 中文深度本地化、支持多 IDE 集成、设计→代码转换 | 功能依赖邀请码/模型生态成熟度待提升 | DeepSeek-V3 模型驱动智能补全/生成 |
| TRAE | 字节跳动 | 中文优化、免费策略、AI 任务执行 & 聊天式协作 | 有遥测/隐私争议,生态成熟度有待提高 | 多大模型接入(GPT-4、Claude Sonnet、DeepSeek 系列等) |
| Qoder | Bright Zenith | 代理式任务模式(Quest)、RepoWiki 自动文档 | 市场新、模型细节不完全公开、稳定性评价不一 | 支持 Claude、GPT、Gemini 等前沿模型 |
| Theia IDE | Eclipse 基金会 | 开源可扩展,支持 VS Code 生态插件 | AI 功能仍在发展中,需要配置 | 可接入多种 LLM |
本手册以 Lingma AI IDE(阿里出品,集成通义千问 Qwen) 为例,但配置适用于标准 VS Code。
开发 java 工程,必配的组件要有:Git Bash,Java jdk, Maven,下面将介绍如何安装配置这些组件。
默认情况下,Windows 创建软链接需要管理员权限。
开启 windows 系统 开发者模式 后,可避免每次都'以管理员身份运行'。
操作路径:
Win + I → 打开 设置开启后,普通权限下的 Git Bash 也可正常执行
ln -s
Git Bash 提供类 Linux / Unix 的命令行能力,是本方案执行脚本的基础环境。
D:/Git在日常开发中,往往同时维护多个项目:
而 Windows 系统层面,JAVA_HOME只能指向一个 JDK,频繁手动切换不仅低效,也极易引发环境混乱。
本文以 Windows 11 为例,在已安装 JDK 1.8 / 17 / 21 / 25 的前提下,构建一套 一次配置,终身一键切换 的 JDK 管理方案。
D:\jdk 目录规划说明:⚠️ 注意:
default 用作软链接入口D:\jdk\default 文件夹,请先删除.zip 压缩包D:\jdk\ 目录jdk 快捷切换验证打开 Git Bash 终端,依次参照下方操作,显示出对应 jdk 版本号即表示配置 ok
jdk8
java version '1.8.0_471'
Java™ SE Runtime Environment (build 1.8.0_471-b09)
Java HotSpot™ 64-Bit Server VM (build 25.471-b09, mixed mode)
jdk17
java version '17.0.17' 2025-10-21 LTS
Java™ SE Runtime Environment (build 17.0.17+8-LTS-360)
Java HotSpot™ 64-Bit Server VM (build 17.0.17+8-LTS-360, mixed mode, sharing)
jdk21
java version '21.0.9' 2025-10-21 LTS
Java™ SE Runtime Environment (build 21.0.9+7-LTS-338)
Java HotSpot™ 64-Bit Server VM (build 21.0.9+7-LTS-338, mixed mode, sharing)
jdk25
java version '25.0.1' 2025-10-21 LTS
Java™ SE Runtime Environment (build 25.0.1+8-LTS-27)
Java HotSpot™ 64-Bit Server VM (build 25.0.1+8-LTS-27, mixed mode, sharing)
配置 JDK 快捷切换命令编辑 .bashrc``.bashrc 位于当前用户主目录,用于定义终端启动时加载的命令与别名。
例如 windows 账号为 vincent,则这个在
C:/Users/vincent/.bashrc
操作步骤:
cd ~ vi .bashrc
或:
notepad .bashrc
alias 配置
# 允许 Git Bash 创建原生 Windows 软链接exportMSYS="winsymlinks:nativestrict"# 默认软链接入口exportJDK_DEFAULT="/d/jdk/default"# JDK 路径exportJDK8_PATH="/d/jdk/jdk1.8.0_471"exportJDK17_PATH="/d/jdk/jdk-17.0.17"exportJDK21_PATH="/d/jdk/jdk-21.0.9"exportJDK25_PATH="/d/jdk/jdk-25.0.1"# 切换命令封装 (在 Git Bash 执行)aliasjdk8="rm $JDK_DEFAULT && ln -s $JDK8_PATH$JDK_DEFAULT && java -version"aliasjdk17="rm $JDK_DEFAULT && ln -s $JDK17_PATH$JDK_DEFAULT && java -version"aliasjdk21="rm $JDK_DEFAULT && ln -s $JDK21_PATH$JDK_DEFAULT && java -version"aliasjdk25="rm $JDK_DEFAULT && ln -s $JDK25_PATH$JDK_DEFAULT && java -version"
保存后执行:
source ~/.bashrc
JDK 安装说明下载渠道
| 类型 | 推荐源 | 说明 |
|---|---|---|
| 官方归档 | Oracle JDK Archive | 需 Oracle 账号,版本最全 |
| 国内镜像 | INJDK 导航站 | 免登录,速度快,含多厂商发行版 |
安装要求强烈建议使用压缩包版(zip)而非安装程序(exe):形成如下目录结构:
D:\jdk\jdk1.8.0_471 D:\jdk\jdk-17.0.17 D:\jdk\jdk-21.0.9 D:\jdk\jdk-25.0.1
java 环境变量配置路径:Win + I → 系统 → 高级系统设置 → 环境变量
| 变量名 | 变量值 | 类型 |
|---|---|---|
JAVA_HOME | D:\jdk\default | 用户/系统变量 |
CLASSPATH | .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; | 系统变量 |
Path追加 | %JAVA_HOME%\bin | 系统变量(置顶) |
⚠️ 重要:
JAVA_HOME必须指向default目录,而非具体版本目录。
CLASSPATH(兼容 JDK 8,JDK 9+ 实际已不再依赖)将
%JAVA_HOME%\bin添加到 Path 列表,并上移至第一行(防止系统自带路径干扰)。
这里以 apache maven 3.6.3 为版本,解压部署至 D 盘根目录下:
D:\apache-maven-3.6.3
验证 maven打开 Git Bash 终端窗口,输入查看版本命令:
mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\apache-maven-3.6.3
Java version: 1.8.0_471, vendor: Oracle Corporation, runtime: D:\jdk\default\jre
Default locale: zh_CN, platform encoding: GBK
OS name: 'windows 11', version: '10.0', arch: 'amd64', family: 'windows'
maven 环境变量配置路径:Win + I → 系统 → 高级系统设置 → 环境变量
| 变量名 | 变量值 | 类型 |
|---|---|---|
MAVEN_HOME | D:\apache-maven-3.6.3 | 用户/系统变量 |
Path追加 | %MAVEN_HOME%\bin | 系统变量(置顶) |
访问官网下载安装,再注册进行登录。
shardulm94.trailing-spacesyatki.vscode-surroundpkief.material-icon-themeredhat.javavscjava.vscode-java-debugvscjava.vscode-java-testvscjava.vscode-mavenvscjava.vscode-gradlevscjava.vscode-java-dependencyvmware.vscode-spring-bootvscjava.vscode-spring-boot-dashboardvscjava.vscode-spring-initializrvue.volarchristian-kohler.path-intellisenseformulahendry.auto-close-tagformulahendry.auto-rename-tagms-vscode.vscode-typescript-tslint-pluginsyler.sass-indentedsibiraj-s.vscode-scss-formatteresbenp.prettier-vscodeecmel.vscode-html-cssyzhang.markdown-all-in-onedavidanson.vscode-markdownlintshd101wyy.markdown-preview-enhancederiklynd.json-toolsquicktype.quicktypemechatroner.rainbow-csvCtrl + K → Ctrl + SCopy Fully Qualified Name直接绑定快捷键,例如:
Ctrl + Alt + Shift + C
核心配置:
在 Lingma AI IDE 中,全局配置会对每一个工作区和项目进行生效。
打开 Lingma AI IDE 后,按下 Ctrl + Shift + P 输入 Preferences: Open User Settings (JSON),添加以下内容:
{/* ================================================================= 核心编辑器与工作台配置 (Workbench & Editor) 包含:字体、编码、文件关联、标尺、颜色微调等 ================================================================= */// 文件图标主题"workbench.iconTheme":"material-icon-theme",// 显示缩略图"editor.minimap.enabled":true,// 编辑器字体大小"editor.fontSize":13,// 编辑器字体家族 (MesloLGS NF 通常用于终端图标支持)"editor.fontFamily":"MesloLGS NF",// 多光标修改的限制数量"editor.multiCursorLimit":100000,// 启用链接编辑(修改标签头自动修改标签尾)"editor.linkedEditing":true,// 自动猜测文件编码"files.autoGuessEncoding":true,// 默认换行符 (LF)"files.eol":"\n",// 禁用保存时自动格式化"editor.formatOnSave":false,// 禁用键入时自动格式化"editor.formatOnType":false,// 禁用粘贴时自动格式化"editor.formatOnPaste":false,// 仅保留基础括号对齐,防止查找替换时大幅度缩进抖动"editor.autoIndent":"brackets",// 禁用自动检测缩进,强制使用本项目定义的 tabSize"editor.detectIndentation":false,// 缩进空格数"editor.tabSize":4,// 使用空格代替 Tab"editor.insertSpaces":true,// 保存时'自动导包'"editor.codeActionsOnSave":{"source.organizeImports":"explicit"},// 文件编码统一 UTF-8"files.encoding":"utf8",// 编辑器垂直标尺(辅助线),用于代码宽度参考"editor.rulers":[{"column":80,"color":"#00FF0010",// 80 字符处,淡绿色{"column":100,"color":"#BDB76B15",// 100 字符处,卡其色{"column":120,"color":"#FA807219"}// 120 字符处,鲑鱼红],/* ================================================================= 终端与 Shell 环境 (Terminal) 包含:默认 Shell、多 JDK 环境变量、自定义终端 Profile ================================================================= */// Windows 下默认终端使用 Git Bash"terminal.integrated.defaultProfile.windows":"Git Bash",// 始终显示终端标签页"terminal.integrated.tabs.hideCondition":"never",// 增加终端滚动缓冲区"terminal.integrated.scrollback":100000,// 自动化任务使用的终端 Profile"terminal.integrated.automationProfile.windows":{"path":"cmd"},// 终端通用环境变量(默认 JDK 路径)"terminal.integrated.env.windows":{"JAVA_HOME":"D:\\jdk\\default","PATH":"D:\\jdk\\default\\bin;${env:PATH}"},// 定义各个终端 Profile 详情"terminal.integrated.profiles.windows":{"Git Bash":{"path":"D:\\Git\\bin\\bash.exe","args":["--login","-i"]},"PowerShell":{"source":"PowerShell","icon":"terminal-powershell"},"Command Prompt":{"path":["${env:windir}\\Sysnative\\cmd.exe","${env:windir}\\System32\\cmd.exe"],"args":[],"icon":"terminal-cmd"},// --- 特定 Java 版本终端 ---"JavaSE-1.8 LTS":{"overrideName":true,"env":{"PATH":"D:\\jdk\\jdk1.8.0_471\\bin;${env:PATH}","JAVA_HOME":"D:\\jdk\\jdk1.8.0_471"},"path":"cmd"},"JavaSE-17 LTS":{"overrideName":true,"env":{"PATH":"D:\\jdk\\jdk-17.0.17\\bin;${env:PATH}","JAVA_HOME":"D:\\jdk\\jdk-17.0.17"},"path":"cmd"},"JavaSE-21 LTS":{"overrideName":true,"env":{"PATH":"D:\\jdk\\jdk-21.0.9\\bin;${env:PATH}","JAVA_TOOL_OPTIONS":"-Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8","JAVA_HOME":"D:\\jdk\\jdk-21.0.9"},"path":"cmd","args":["/k","chcp","65001"]// 强制 UTF-8 编码},"JavaSE-25 LTS":{"overrideName":true,"env":{"PATH":"D:\\jdk\\jdk-25.0.1\\bin;${env:PATH}","JAVA_TOOL_OPTIONS":"-Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8","JAVA_HOME":"D:\\jdk\\jdk-25.0.1"},"path":"cmd","args":["/k","chcp","65001"]}},/* ================================================================= Java 开发环境配置 (JDK / Maven / Gradle) 包含:运行时、编译设置、调试器、构建工具路径 ================================================================= */// Java 运行时列表配置"java.configuration.runtimes":[{"name":"JavaSE-1.8","path":"D:\\jdk\\jdk1.8.0_471"},{"name":"JavaSE-17","path":"D:\\jdk\\jdk-17.0.17"},{"name":"JavaSE-21","path":"D:\\jdk\\jdk-21.0.9"},{"name":"JavaSE-25","path":"D:\\jdk\\jdk-25.0.1","default":true// 默认 JDK}],// Java 测试运行器配置"java.test.config":{"vmArgs":["-Dstdout.encoding=UTF-8","-Dstderr.encoding=UTF-8"]},// 启动时不自动检测已安装的 JDK// "java.configuration.detectJdksAtStart": false,// 自动进行空指针分析"java.compile.nullAnalysis.mode":"automatic",// 自动更新构建配置"java.configuration.updateBuildConfiguration":"automatic",// Java 调试:自动热代码替换"java.debug.settings.hotCodeReplace":"auto",// 依赖包显示方式:分层级显示"java.dependency.packagePresentation":"hierarchical",// 开启自动构建"java.autobuild.enabled":true,// 组织导入时,同一包下超过 99 个类即转换为通配符 (*) 导入"java.sources.organizeImports.staticStarThreshold":99,// Maven 自动更新快照版本"java.maven.updateSnapshots":true,// Gradle 主目录路径"java.import.gradle.home":"D:\\gradle\\default",// Gradle 使用的 JDK"java.import.gradle.java.home":"D:\\jdk\\default",// ============================================================// 构建、调试与终端设置// ============================================================// Maven 视图层级化显示"maven.view":"hierarchical",// 指定 Maven 本地安装路径 (建议手动指定,避免环境混乱)// 如果已配环境变量填 mvn,否则填全路径 ("D:\\apache-maven-3.6.3\\bin\\mvn")"maven.executable.path":"D:\\apache-maven-3.6.3\\bin\\mvn",// 常用快捷指令"maven.terminal.favorites":[{"alias":"快速打包 (强制刷新)","command":"clean install -U","debug":false},{"alias":"调试模式打包","command":"clean install -U -X","debug":false}],// Maven 终端使用的自定义环境变量"maven.terminal.customEnv":[{"environmentVariable":"JAVA_HOME","value":"D:\\jdk\\default"}],/* ================================================================= 调试体验优化 (Debug Configuration) ================================================================= */// 调试工具栏的位置:// "floating": 悬浮在顶部中央(默认,可拖动)// "docked": 固定在侧边栏调试面板顶部(不遮挡代码)// "hidden": 隐藏工具栏"debug.toolBarLocation":"floating",// 调试控制台字体大小"debug.console.fontSize":13,// 调试日志不自动换行"debug.console.wordWrap":false,// 每次开始调试时自动打开控制台"debug.internalConsoleOptions":"openOnSessionStart",// 调试结束后不强制跳回文件管理器,保持当前视图"debug.openExplorerOnEnd":false,// 在底部状态栏也显示调试状态和按钮"debug.showInStatusBar":"always","debug.openDebug":"neverOpen",// 只有报错时才强行提醒"debug.onTaskErrors":"showErrors",/* ================================================================= Git & GitLens 版本控制 包含:Git 基础行为、GitLens 增强显示(Blame/History) ================================================================= */// 不打开父级 Git 仓库"git.openRepositoryInParentFolders":"never",// 忽略未安装 Git 的警告"git.ignoreMissingGitWarning":true,// 自动拉取远程变更"git.autofetch":true,// GitLens 时间格式"gitlens.defaultDateFormat":"YYYY-MM-DD HH:mm:ss",// 时间显示样式:绝对时间"gitlens.defaultDateStyle":"absolute",// 作者显示样式:显示姓名"gitlens.defaultAuthorStyle":"name",// 时间来源:按提交时间 (authored)"gitlens.defaultDateSource":"authored",// 启用当前行 Blame 信息"gitlens.currentLine.enabled":true,// 行内 Blame 显示在行尾"gitlens.currentLine.location":"endOfLine",// 行内 Blame 格式:作者,时间 · 信息"gitlens.currentLine.format":"${author}, ${date} · ${message}",// 非编辑状态也显示行内 Blame"gitlens.currentLine.onlyWhileEditing":false,// 鼠标悬停时启用详细信息"gitlens.currentLine.hover.enabled":true,// 文件级 Blame 切换模式"gitlens.blame.toggle.mode":"file",// Blame 视图紧凑模式"gitlens.blame.compact":true,// 提交记录文件列表布局"gitlens.views.commits.files.layout":"list",// 显示分支比较"gitlens.views.commits.showBranchComparison":"branch",// 允许文件历史追踪重命名"gitlens.advanced.fileHistoryFollowsRenames":true,// 比较时忽略空白字符变更"gitlens.ignoreWhitespace":true,/* ================================================================= 语言特定配置 (Language Specific) 包含:json,Vue, SCSS, Bat 的格式化与 Emmet ================================================================= */"[java]":{"editor.formatOnSave":false//保存 Java 文件时不会触发格式化},"[jsonc]":{"editor.defaultFormatter":"vscode.json-language-features"// jsonc 语言,使用 vscode 默认格式化},"[json]":{"editor.defaultFormatter":"vscode.json-language-features"// json 语言,使用 vscode 默认格式化},"[vue]":{"editor.defaultFormatter":"esbenp.prettier-vscode"// Vue 语言,使用 Prettier - Code formatter 插件格式化},"[scss]":{"editor.defaultFormatter":"sibiraj-s.vscode-scss-formatter"// scss 语言,使用 vscode-scss-formatter 插件格式化},"[xml]":{"editor.defaultFormatter":"dotjoshjohnson.xml",// XML 语言,使用 dotjoshjohnson.xml 插件格式化,对 mybatis xml 格式化友好些"editor.formatOnSave":false// 保存 xml 文件时不会触发格式化},"[sql]":{"editor.formatOnSave":false,// 保存 xml 文件时不会触发格式化"cSpell.enabled":false// 禁用拼写检查},"[tsql]":{"editor.formatOnSave":false,// 保存 xml 文件时不会触发格式化"cSpell.enabled":false// 禁用拼写检查},"[bat]":{"files.eol":"\r\n"// 批处理文件强制使用 CRLF 换行},// ============================================================// XML 与 MyBatis 深度定制 (保护 SQL 逻辑)// ============================================================// 必须开启,否则无法手动触发格式化"xml.format.enabled":true,// 防止长 SQL 被强制折行"xml.format.maxLineWidth":999,// 不自动拆分属性,保持单行或原始写法"xml.format.splitAttributes":"preserve",// 若属性已换行,则保持原有换行与缩进布局"xml.format.wrapAttributes":"preserve",// 保持 CDATA 内部不换行"xml.format.joinCDATALines":true,// 建议 XML 语言服务器优先使用二进制通信(若支持),以提升性能"xml.server.preferBinary":true,// 在空闭合标签前添加空格,例如 <tag /> 而非 <tag/>"xml.format.spaceBeforeEmptyCloseTag":true,// 即使手动触发格式化,也会跳过以下标签内容,双重保护 SQL"xml.format.contentUnformatted":["mapper","select","insert","update","delete","sql","script"],// 彻底关闭标签联动,防止大规模查找替换时触发非预期的标签变更// 禁用自动闭合标签"xml.editor.autoClosingTags":false,/* ================================================================= 扩展插件与杂项 (Extensions & Miscellaneous) 包含:拼写检查、空格处理、LiveServer、安全信任 ================================================================= */// 拼写检查提示级别:提示 (Hint)"cSpell.diagnosticLevel":"Hint",// 允许单词中包含数字、下划线、大小写混合"cSpell.allowCompoundWords":true,// 忽略全大写(常用于常量、SQL 关键字)"cSpell.ignoreCase":true,// 尾随空格高亮背景色"trailing-spaces.backgroundColor":"rgba(255,0,0,0.1)",// 尾随空格检测不包含空行"trailing-spaces.includeEmptyLines":false,// Live Server 不显示信息弹窗"liveServer.settings.donotShowInfoMsg":true,// 工作区信任设置:默认打开不信任的文件"security.workspace.trust.untrustedFiles":"open",// 不允许 Red Hat Java 扩展(Language Support for Java™ by Red Hat)发送匿名遥测数据"redhat.telemetry.enabled":false,/* ================================================================= AI 辅助工具/集成插件配置 (AI Assistant Settings) 包含:语言偏好、AI 补全、聊天安全、自动更新与代理设置 ================================================================= */"app":{// --- 通用设置 ---"configGeneralDisplayLanguage":"zh-cn",// 插件界面显示语言:简体中文"configGeneralAiResponseLanguage":"zh-cn",// AI 回答问题的语言:简体中文"configGeneralImprovementPlan":"agree",// 是否同意加入用户体验改进计划"configGeneralImportSettings":"VS Code",// 设置导入来源:从标准 VS Code 导入// --- 代码补全 (Completion) ---"configCompletionEnableNES":true,// 是否启用新型代码补全引擎 (NES)"configCompletionDisabledLanguages":[],// 禁用补全功能的编程语言列表(目前为空)"configCompletionTriggerInComment":true,// 在注释中是否依然触发 AI 代码补全"configCompletionAutoImport":true,// AI 补全代码时是否自动导入相关的类/包// --- AI 聊天/对话 (Chat) ---"configChatWebToolsMode":"Ask every time",// AI 使用联网搜索工具的模式:每次都询问我"configChatAskModeUseTools":false,// 在提问模式下是否默认允许使用外部工具"configChatEditFileTool":false,// 是否允许 AI 直接通过对话修改本地文件"configChatTerminalRunMode":"askEveryTime",// AI 执行终端命令前的触发模式:每次询问"configChatCommandDenyList":"rm,mv,sudo,wget,curl,chown",// 终端命令黑名单:禁止 AI 执行这些高风险命令"configChatCommandAllowlist":"",// 终端命令白名单(留空表示按默认规则)"configChatAutoRunMcpTools":true,// 是否自动运行 MCP (Model Context Protocol) 协议工具"configChatMethodQuickOperation":false,// 是否开启对话框内的方法级快速操作按钮"configChatShowSelectionToolbar":true,// 选中代码时是否显示 AI 功能悬浮条// --- 进阶功能 ---"configQuestEnable":true,// 是否启用任务/探索模式 (Quest)"configMemoryAutoGenerate":true,// 是否允许 AI 自动生成/记录长期记忆(记住你的编码习惯)"configAdvancedAutoUpdate":true,// 插件是否自动检查并安装更新"configAdvancedProxyMode":"system",// 插件的网络代理模式:使用系统代理"configAdvancedProxyURL":""// 自定义代理服务器地址}}
🎯注意Git Bash 安装目录指定正确;jdk 安装目录要指定正确,默认 jdk,各版本 jdk 都要指定正确;maven 目录要指定正确;
File → Open Folder...pom.xml 文件的项目根目录Select FolderYesView → Command Palette (或按 Ctrl+Shift+P)Git: CloneOpen Repository in New Windowpom.xml)pom.xml → 添加到工作区pom.xml 上右键选择 Maven → 导入项目方法 1 - 使用命令面板:
Ctrl + Shift + P → Java: Create Java ProjectMavenmaven-archetype-quickstart(简单 Java 项目)或 maven-archetype-webapp(Web 项目)方法 2 - 使用终端:
# 创建项目目录mkdir my-project &&cd my-project # 使用 Maven 原型创建 mvn archetype:generate \ -DgroupId=com.example \ -DartifactId=my-app \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DarchetypeVersion=1.4\ -DinteractiveMode=false # 用 IDE 打开 code my-app
使用 Spring Initializr:
Ctrl + Shift + P → Spring Initializr: Generate a Maven ProjectJavaJarSpring Web - Web 应用开发Spring Data JPA - 数据持久化MySQL Driver - MySQL 数据库Lombok - 代码简化Spring Boot DevTools - 热部署问题现象:pom.xml 报红,依赖无法解析
解决方案:
Maven: Execute Commands → clean install -Umvn clean install -U清除本地仓库缓存:
# 删除本地仓库中的错误文件rm -rf D:/maven-repo/**/*.lastUpdated
问题现象:编译报错 invalid source release
解决方案:
Ctrl + Shift + P → Java: Clean Workspace使用 Git Bash 切换对应 JDK 版本:
jdk8 # 或 jdk17, jdk21
检查项目 pom.xml 中的 Java 版本:
<properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties>
问题现象:中文显示乱码或编译报错
解决方案:
在 pom.xml 中添加编码配置:
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
确保所有编码设置为 UTF-8:
{"files.encoding":"utf8","java.jdt.ls.vmargs":"-Dfile.encoding=UTF-8"}
在 VS Code / Lingma AI IDE 下开发 Java 工程 时,工作空间级别的 .vscode 目录是'项目级 IDE 规范'的核心。
它的目标不是'个人偏好',而是:保证团队成员打开工程即可一致运行、调试、构建。
.vscode/ ├── extensions.json ← 自动提示安装 ├── settings.json ← 统一编码、格式化、保存动作 ├── launch.json ← 调试/运行模板 └── java-formatter.xml ← 团队代码风格 (推荐 Jetbrains IDEA 格式化风格) └── .gitignore ← git 版本控制忽略配置文件
.gitignore
## maven target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/ ### STS ### .apt_generated .springBeans .sts4-cache ### IntelliJ IDEA ### .idea *.iws *.iml *.ipr /out/ ### NetBeans ### /nbproject/private/ /nbbuild/ /dist/ /nbdist/ /.nb-gradle/ build/ !**/src/main/**/build/ !**/src/test/**/build/ ### VS Code ### .vscode/ ## Eclipse Core .project .classpath .settings # External tool builders .externalToolBuilers/ # Locally stored "Eclipse launch configurations" *.launch # CDT-specific .cproject # Java annotation processor (APT) .factorypath # PDT-specific .buildpath # TeXlipse plugin .texlipse ## Mac .DS_Store ## SVN .svn catalina.base_IS_UNDEFINED ## rebel rebel-remote.xml rebel.xml ## log logs *.log ## other dubbo-cache dubbo-cache.lock
java-formatter.xml 配置:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><profiles version="20"><profile kind="CodeFormatterProfile" name="IDEA-Default" version="20"><!-- 通用 --><setting id="org.eclipse.jdt.core.formatter.lineSplit" value="2147483647"/><setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/><setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/><setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/><!-- 花括号 --><setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/><setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/><setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/><setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/><!-- 换行 --><setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="do_not_insert"/><!-- 空格 --><setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do_not_insert"/><setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/><!-- 导入 --><setting id="org.eclipse.jdt.core.formatter.imports_order" value="java;javax;org;com;"/><setting id="org.eclipse.jdt.core.formatter.imports_on_demand_threshold" value="99"/><setting id="org.eclipse.jdt.core.formatter.imports_static_on_demand_threshold" value="99"/></profile></profiles>
launch.json 配置:
{// VS Code 统一使用 "0.2.0""version":"0.2.0","configurations":[{// 启动类型"type":"java",// 启动入口显示的名称"name":"sh-test2-security",// 启动项目名"projectName":"aplus-securitycenter-start",// 启动方式"request":"launch",// 启动时主类"mainClass":"com.centaline.aplus.AplusSecurityApplication",// 启动时 JVM 参数"vmArgs":["-Dfile.encoding=UTF-8","-Dserver.port=8080"],// 输出到 VSCode 的'调试控制台'(Debug Console) 面板,对 UTF-8 支持最好,几乎不会乱码"console":"internalConsole"}}]
settings.json 配置:
{"java.format.settings.url":".vscode/java-formatter.xml",// java 格式化配置文件"java.format.settings.profile":"IDEA-Default",// 使用指定的 Profile// 指定 Maven 本地安装路径 (建议手动指定,避免环境混乱)"maven.executable.path":"mvn",// 如果已配环境变量填 mvn,否则填全路径 ("D:\\apache-maven-3.6.3\\bin\\mvn")// maven 常用快捷指令"maven.terminal.favorites":[{"alias":"快速打包 (强制刷新)","command":"clean install -U","debug":false},{"alias":"调试模式打包","command":"clean install -U -X","debug":false}]}
extensions.json 配置:
{// =========================// VS Code / Lingma IDE// 推荐插件列表(团队级)//// 说明:// - 新成员打开工程时会收到'推荐安装插件'提示// - 这里只放【必须 / 强烈建议】插件// - 不要放纯个人习惯类插件// ========================="recommendations":[// ===== 通用效率 / 代码质量 =====// 英文拼写检查(变量名 / 注释)"streetsidesoftware.code-spell-checker",// 扫描 TODO/FIXME/NOTE 注释并以树形结构展示"gruntfuggly.todo-tree",// 行内错误高亮显示(比 Problems 面板更直观)"usernamehw.errorlens",// ===== Git / 版本管理 =====// Git 增强:行级 blame、提交历史、作者信息"eamodio.gitlens",// Git 历史可视化(文件 / 分支 / 提交)"donjayamanne.githistory",// ===== Java 基础能力(核心) =====// Java 插件合集(语言服务 / 调试 / 测试 / Maven / Gradle 等)"vscjava.vscode-java-pack",// Java 语言服务器(语法、补全、重构、诊断核心)// ⚠️ 已包含在 java-pack 中,但单独列出方便认知"redhat.java",// Java 调试支持(断点 / 变量 / 调用栈)"vscjava.vscode-java-debug",// JUnit / TestNG 测试运行与调试"vscjava.vscode-java-test",// Maven 项目支持(生命周期、依赖、目标执行)"vscjava.vscode-maven",// Java 项目依赖关系与类路径可视化"vscjava.vscode-java-dependency",// ===== Spring Boot =====// Spring Boot 插件合集"vmware.vscode-boot-dev-pack",// Spring Boot 开发支持(配置提示、诊断、导航)"vmware.vscode-spring-boot",// Spring Boot 应用启动 / 管理面板"vscjava.vscode-spring-boot-dashboard",// Spring Initializr:创建 Spring Boot 项目"vscjava.vscode-spring-initializr",// ===== ORM / 数据访问 =====// MyBatis / iBatis XML 辅助(跳转、补全、校验)"yangbaopan.vscode-java-ibatisx",// 依赖安全与许可证分析(CVE / License 风险提示)"redhat.fabric8-analytics",// ===== 前端(如工程包含前端模块) =====// Vue 插件合集(基于 Volar,适配 Vue 3)"misterj.vue-volar-extention-pack",// HTML 中 class / id 对应 CSS 自动补全"ecmel.vscode-html-css",// ===== 配置文件 =====// YAML 支持(Spring / Kubernetes / CI 配置)"redhat.vscode-yaml",// XML 支持(校验 / 补全 / 格式化)"redhat.vscode-xml"]}
方法 1 - 代码 Lens:
main 方法的 Java 文件main 方法上方的 'Run | Debug' 链接方法 2 - 右键菜单:
方法 3 - 命令面板:
Ctrl + Shift + P → Java: Run Java使用 Spring Boot Dashboard:
使用代码 Lens:
@SpringBootApplication 注解)使用终端:
# Maven 方式 mvn spring-boot:run # 或先打包再运行 mvn clean package java -jar target/demo-project-1.0.0-SNAPSHOT.jar
F9 在当前行切换断点断点类型:
i > 100)Ctrl + Shift + P → Java: Add Exception Breakpoint启动调试会话:
Ctrl + Shift + D)F5 或点击绿色播放按钮启动调试调试控制按钮:
| 按钮 | 快捷键 | 功能 |
|---|---|---|
| 继续 | F5 | 继续执行到下一个断点 |
| 单步跳过 | F10 | 执行当前行,不进入方法 |
| 单步进入 | F11 | 进入方法内部 |
| 单步跳出 | Shift+F11 | 跳出当前方法 |
| 重启 | Ctrl+Shift+F5 | 重新启动调试 |
| 停止 | Shift+F5 | 停止调试 |
变量视图:
监视视图:
user.getName())调用堆栈视图:
断点视图:
运行单个测试:
运行所有测试:
使用测试资源管理器:
使用终端:
# 运行所有测试 mvn test# 运行单个测试类 mvn test -Dtest=UserServiceTest # 运行单个测试方法 mvn test -Dtest=UserServiceTest#testCreateUser
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + K | 删除当前行 |
Ctrl + Enter | 下方插入新行 |
Ctrl + Shift + Enter | 上方插入新行 |
Alt + ↑ | 当前行上移 |
Alt + ↓ | 当前行下移 |
Ctrl + ] | 增加缩进 |
Ctrl + [ | 减少缩进 |
Ctrl + / | 切换行注释 |
Ctrl + Shift + / | 切换块注释 |
Ctrl + D | 选中下一个相同单词(多光标) |
Ctrl + Shift + L | 选中所有相同单词 |
Alt + 鼠标点击 | 多光标编辑 |
Ctrl + Shift + Alt + ↑/↓ | 列选择模式 |
| 快捷键 | 功能 |
|---|---|
Ctrl + P | 快速打开文件 |
Ctrl + Shift + O | 跳转到文件中的符号 |
Ctrl + T | 工作区符号搜索 |
Ctrl + G | 跳转到指定行 |
F12 | 跳转到定义 |
Alt + F12 | 速览定义(不跳转) |
Ctrl + Shift + F12 | 显示所有引用 |
Ctrl + - | 返回上一个位置 |
Ctrl + Shift + - | 前进到下一个位置 |
Ctrl + Shift + F | 全局搜索 |
Ctrl + Shift + H | 全局替换 |
| 快捷键 | 功能 |
|---|---|
Ctrl + Space | 触发建议(代码补全) |
Ctrl + Shift + Space | 参数提示 |
Ctrl + . | 快速修复 |
Ctrl + Shift + R | 重构菜单 |
F2 | 重命名符号 |
Ctrl + K Ctrl + F | 格式化选中代码 |
Shift + Alt + F | 格式化整个文档 |
Ctrl + K Ctrl + X | 删除尾部空格 |
Ctrl + K Ctrl + C | 添加行注释 |
Ctrl + K Ctrl + U | 移除行注释 |
| 快捷键 | 功能 |
|---|---|
Ctrl + B | 切换侧边栏显示 |
Ctrl + Shift + E | 打开资源管理器 |
Ctrl + Shift + F | 打开搜索 |
Ctrl + Shift + G | 打开源代码管理 |
Ctrl + Shift + D | 打开调试视图 |
Ctrl + Shift + X | 打开扩展视图 |
Ctrl + J | 切换面板(终端) |
Ctrl + Shift + N | 新建窗口 |
Ctrl + W | 关闭当前标签 |
Ctrl + K W | 关闭所有标签 |
Ctrl + Tab | 切换标签页 |
Ctrl + 1/2/3... | 切换到第 N 个编辑器组 |
| 快捷键 | 功能 |
|---|---|
F5 | 开始/继续调试 |
Ctrl + F5 | 运行(不调试) |
Shift + F5 | 停止调试 |
Ctrl + Shift + F5 | 重启调试 |
F9 | 切换断点 |
F10 | 单步跳过 |
F11 | 单步进入 |
Shift + F11 | 单步跳出 |
Ctrl + Shift + D | 打开调试视图 |
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + G | 打开 Git 视图 |
Ctrl + Enter | 提交(Git 视图中) |
Ctrl + Shift + G C | 查看提交 |
Ctrl + Shift + G B | 查看分支 |
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + L | 打开通义灵码对话面板 |
Ctrl + I | 行内代码补全 |
Tab | 接受 AI 建议 |
Esc | 取消 AI 建议 |
Ctrl + → | 逐词接受建议 |
Alt + ] | 下一个建议 |
Alt + [ | 上一个建议 |
修改快捷键:
文件 → 首选项 → 键盘快捷方式(Ctrl + K Ctrl + S)推荐自定义配置:
// keybindings.json[{"key":"ctrl+shift+t","command":"java.test.run"},{"key":"ctrl+shift+y","command":"java.debug.run"},{"key":"ctrl+shift+m","command":"maven.goal.custom"}]
症状:Java 功能无法使用,提示语言服务器错误
解决:
java.jdt.ls.java.home 配置是否正确Ctrl + Shift + P → Java: Clean WorkspaceCtrl + Shift + P → Developer: Reload Window症状:pom.xml 报红,依赖显示缺失
解决:
mvn clean install -U解决:
症状:IDE 卡顿,提示 OutOfMemory
解决:
修改 settings.json:
{"java.jdt.ls.vmargs":"-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx4G -Xms100m"}

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online