新装的 VSCode,打开一个 Maven 项目,import 全是红线,右下角一直转圈提示正在构建工作区。Java 插件装了,JDK 也装了,语言服务就是起不来。多数情况是只装了语言支持那一个,或者它找不到 17 以上的 JDK。
装扩展包,别只装单个
微软的 Extension Pack for Java 一次带上语言支持、调试器、测试运行器、Maven 和项目管理五件套。只装 Red Hat 那个语言支持也能补全,但跑单测、看依赖树还得另外配。Spring 项目再加 Spring Boot Extension Pack,里面有配置项补全和运行面板。
语言服务找不到 JDK 的两种情况
一种,机器上只有 JDK 8,新版语言服务要求 17 以上,启动直接失败,日志里写着 unsupported class file version。另一种,装了多个版本但没告诉插件用哪个。settings.json 里配 java.configuration.runtimes,把路径和版本写清楚,再把默认项指到 17 或 21。项目本身用 8 编译没问题,编译器版本可以单独设。
依赖拉完了还报红
命令面板搜 clean,执行 Clean Java Language Server Workspace,让它把索引重建一遍,之后 Java: Reload Projects 重新导入。国内网络连不上中央仓库时,在配置里加镜像地址,否则会一直卡在 resolving dependencies。Maven 的 settings.xml 也可以直接指过去,插件读的是同一份。
Lombok 和目录结构
Lombok 生成的 getter 报未定义,先确认注解处理开着,再看依赖版本。老项目用很早的 Lombok,新版语言服务偶尔解析不了,把依赖升一档通常就好。还有一种情况是项目不是标准 Maven 结构,源码目录要手动加进 source paths,插件不会自己猜,src 下面放错层级也会一片红。
要不要换 IDEA:只改几个文件、看日志,VSCode 够轻快;大型多模块、重构频繁,IDEA 的索引和重构还是更稳。工具没有对错,看项目体量。真按不动,先看输出面板里 Java 语言服务的日志,报错那一行通常直接写着原因。