IntelliJ无法识别Scala主对象代码变更问题求助
这问题我之前帮同事排查过好几次,大概率是IntelliJ的缓存或者sbt同步环节出了问题,给你列几个实用的排查和解决步骤:
强制刷新sbt项目
有时候IDE和sbt的同步会莫名卡住,你可以点击IntelliJ右侧边栏的sbt面板,点顶部的刷新图标(🔄),或者右键项目选择sbt > Reload project。这会让IDE重新读取sbt的构建定义,同步最新的代码状态。清理IntelliJ缓存
IntelliJ的本地缓存偶尔会“抽风”,导致代码变更不被感知。你可以通过File > Invalidate Caches...,然后选择Invalidate and Restart。重启后IDE会重新索引整个项目,很多类似的代码感知问题都能迎刃而解。检查运行配置的前置构建选项
打开你的运行配置(Run/Debug Configurations),看看Before launch部分是不是只勾选了Build?如果IDE默认的Build没有调用sbt编译,很可能和sbt clean assembly的构建结果不一致。你可以添加一个sbt Task,输入compile,把它放在Build步骤之前,确保每次运行前都用sbt编译最新代码。确认Scala插件与sbt版本兼容
要是IntelliJ的Scala插件版本和项目使用的sbt版本不匹配,也会引发同步异常。你可以去Settings > Plugins里检查Scala插件是否为最新版,同时确认项目project/build.properties里的sbt.version和插件支持的版本范围匹配。核对项目构建输出目录
进入Project Structure > Modules > 你的模块 > Paths,看看Output path和Test output path是不是和sbt默认的target/scala-<version>/classes一致?如果路径不统一,IDE编译的结果和sbt编译的不在同一个目录,运行按钮自然会读取旧的输出文件。尝试重新导入项目
如果上面的方法都没用,可以先把项目从IntelliJ里移除,然后重新选择sbt项目类型导入。让IDE从头开始构建索引和配置,这通常能解决一些顽固的同步问题。
这些步骤按顺序试下来,基本能解决大部分代码变更不被识别的情况。我之前遇到类似问题,大多是缓存或同步的锅,清理缓存+重新加载sbt项目就搞定了。
内容的提问来源于stack exchange,提问作者Srinivas

