补全不弹大概率是Autopopup code completion未启用、JDK配置错误或目录未标记为Sources Root;需依次检查Settings→Editor→General→Code Completion中开关状态、File→Project Structure→Project中SDK是否完整、右键src目录→Mark as→Sources Root。

补全直接不弹,大概率是 Autopopup code completion 被关了,或者 JDK 没配对、目录没标成 Sources Root——先查这三项,90% 的问题当场解决。
Autopopup 开关被关了,补全就“哑火”
很多人以为 Ctrl+Space 才是补全的全部,其实 Autopopup code completion 控制的是“敲 list. 后自动弹出方法列表”这个核心体验。它一关,你得手动按 Ctrl+Space 才有反应,而且经常还弹不出来。
- 路径:
Settings → Editor → General → Code Completion - 必须勾选
Show the code completion popup和Autopopup code completion - 延迟建议设为
100ms:太短(0)易误触,太长(500+)像卡顿 - 如果只在 .java 文件生效,但在 .kt 或 .ts 里失效,说明不是这个开关的问题,往下看
项目结构没认对,补全就“看不见代码”
IDEA 不靠文件后缀识别代码,而是靠目录标记。哪怕 src/main/java/com/example/Service.java 文件存在且语法正确,只要 src/main/java 没被标记为 Sources Root,IDE 就当它是纯文本——不索引、不跳转、不报错、补全全挂。
- 右键
src/main/java目录 →Mark as → Sources Root(图标变蓝才算成功) - 检查
File → Project Structure → Modules → Sources页签,确认路径已列入Source Folders - 如果用了 Maven 多模块,父
pom.xml没加载,子模块也会被当成普通文件夹——执行Reload project(右键 pom.xml →Reload project)比重启快得多
JDK 配得不对,补全就“找不到爹”
补全依赖语义模型,而模型构建的前提是能解析 java.lang.Object。如果 SDK 指向 JRE、空路径、或精简版 JDK(比如没带 src.zip),连 String s = ""; 都不会触发提示,更别说方法补全。
- 路径:
File → Project Structure → Project → Project SDK,必须指向完整 JDK(含src.zip和javadoc) - 验证方式:在任意 .java 文件中
Ctrl + ClickSystem,能跳进源码才合格 - Language level 必须匹配:Java 17 项目却设成 Language level 8,
var、sealed全被无视,补全列表直接砍半 - Lombok 项目务必装
Lombok Plugin,否则@Data生成的 getter/setter 不进补全项
快捷键被劫持,补全就“收不到指令”
Ctrl+Space 在 Windows 上常被搜狗、QQ 输入法霸占为中英文切换键;macOS 上可能被 Spotlight 或某些工具占用。IDEA 根本收不到按键事件,自然不响应。
- 验证:打开
Settings → Keymap,搜索Code Completion,看Basic动作是否真绑定在Ctrl+Space - 临时绕过:改用
Ctrl+Shift+Space(智能补全,优先展示匹配类型的方法) - 彻底解决:输入法设置里关掉 Ctrl+Space 切换,或 macOS 执行:
defaults write NSGlobalDomain NSUserKeyEquivalents -dict-add '{"Control Space"="";}' - 插件冲突也常见:AI 补全类插件(如 CodeWhisperer、TabNine)可能覆盖默认补全链路,可尝试禁用后测试
最隐蔽的坑是:补全看似恢复了,但 Parameter Info(Ctrl+P)仍不弹——这往往不是设置问题,而是 JDK 缺少调试符号表,尤其出现在 Docker 容器内运行的 IDEA 或 Liberica slim 版本里。这时候光调设置没用,得换带 src.zip 和 debuginfo 的 JDK。











