IntelliJ IDEA 在代码完成中显示已删除的文件和包

IntelliJ IDEA shows deleted files and packages in code completion

我更改了项目包的结构。我已经创建了新包,将一些文件移动到新包中并删除了文件所在的空包。

现在的问题是代码补全显示了一些文件两次,有新的正确版本和带有旧包结构的旧版本。 让我举个例子:

  1. 我在包 "component.builders.gui" 中有一个 class(文件)"ButtonBuilder"。然后我将 "ButtonBuilder" 移动到包 "component.builders.gui.button" 中。当我现在在某处键入 "ButtonBuilder" 时,代码完成建议两个版本,第一个是 "ButtonBuilder (component.builders.gui)",第二个是 "ButtonBuilder component.builders.gui.button)",但是没有文件 / class 命名为 "ButtonBuilder" 在 "component.builders.gui".

  2. 第二个示例类似,当我键入 "DefaultPhysicComponent" 时,代码完成会给出两个选项,"DefaultPhysicComponent (component.components.physic)" 和 "DefaultPhysicComponent (components.physicComponents)"。第一个是正确的,但第二个不存在。 class / 文件 "DefaultPhysicComponent" 最初在 "components.physicComponents" 中,然后我创建了新包 "component.components.physic",将文件移到那里并删除了旧包。现在甚至不存在包 "physicComponents",但是代码完成给出了这两个选项。

还有其他文件和包有同样的问题。所以不知何故 IDE "thinks" 旧的包和文件仍然存在。这也会产生另一个导入问题。例如,当我导入时

导入component.builders.gui.button.*;

导入component.builders.gui.*;

IDE 表示对 "ButtonBuilder" 的引用不明确,但如上所述,只有一个文件 / class "ButtonBuilder".

有人知道如何解决这个问题吗?

File > Preferences > Compiler 下检查是否选择了此选项:"Clear output directory on rebuild"。

然后使用 Build > Rebuild Project

重建您的项目

如果此后问题仍然存在,则使缓存无效,使用 File > Invalidate Caches / Restart 然后单击 Invalidate 按钮。

为了删除不存在的文件(但仍被检测为未解决),您可以通过 mercurial 尝试以下解决方案:

hg resolve -all [验证检测为未解析的文件(标有U的文件)] 然后为每个未解析和不存在的文件执行 hg resolve filepath (+ 选择 "d" 删除它)