IntelliJ IDEA中Scala跨平台项目的包导入异常问题#27589
我之前也碰到过类似的情况——sbt编译全程无报错、项目能正常运行,但IDE里就是红一片找不到类,这种构建工具和IDE的同步问题确实挺闹心的。针对你用sbt-crossproject构建Scala跨平台项目、IntelliJ 2022.1无法识别共享模块其他包类的问题,给你几个实用的解决方案:
刷新并重新导入sbt项目
先试试最基础的同步操作:在IntelliJ右侧的sbt面板里点击刷新图标(圆圈箭头),或者右键项目根目录选择SBT > Refresh SBT Project。如果还是不行,就彻底重新导入一次:删除项目根目录下的.idea文件夹和所有*.iml文件,然后打开IntelliJ重新选择项目,以sbt构建方式导入。检查Scala和sbt插件的兼容性
IntelliJ 2022.1对应的插件版本可能和sbt-crossproject存在适配问题。打开Settings > Plugins,找到Scala插件,确认是适配2022.1版本的最新版(可以在插件市场里点击检查更新);同时确保sbt插件处于启用状态,版本也适配当前IDE。手动标记共享模块的源目录
sbt-crossproject的跨平台源目录结构(比如shared/src/main/scala)有时候不会被IDE自动识别。你可以打开File > Project Structure > Modules,找到共享模块,切换到Sources标签,检查对应目录是否被标记为Sources Root。如果没有,右键目录选择Mark Directory as > Sources Root。调整sbt导入设置
进入Settings > Build, Execution, Deployment > Build Tools > sbt,确保勾选Use sbt shell for build and import,同时在Import Options里勾选Download sources和Download documentation。有时候IDE没下载源码,就会出现类识别异常的情况。清理IDE缓存并重启
这是解决IDE各类奇怪问题的“万能招”:点击File > Invalidate Caches...,选择Invalidate and Restart,让IDE彻底清理缓存后重启。很多时候,类识别的问题就是缓存过期导致的。
另外,你提到的Prova2.scala文件的类识别问题,大概率是IDE没同步好sbt-crossproject的跨平台依赖关系,上面的步骤应该能覆盖大部分场景。如果还是不行,可以先在sbt里执行clean和compile命令,再回到IDE刷新项目,确保构建产物是最新的。
内容的提问来源于stack exchange,提问作者Andrea Acampora

