【问题标题】:IntelliJ IDE | .iml File lost or deletedIntelliJ IDE | .iml 文件丢失或删除
【发布时间】:2016-08-01 05:41:17
【问题描述】:

上周我正在使用 IntelliJ IDE 开发一个 Java EE 项目。

今天:当我启动 IntelliJ 2016.1 时,它给了我错误:

加载项目时出错

无法加载模块 FirstWebApp

当我查看详细信息时,它说找不到我的 FirstWebApp.iml 文件,因此无法加载我的项目。

我在资源管理器中检查了我的项目结构,除了 iml 文件之外的所有内容都在那里。我还查看了回收站,但我也找不到它。

  • 这样的文件怎么会消失?

  • 如果可能的话,我怎样才能找回我的 iml 文件?

  • 这些 iml 文件有什么作用?

我是 Java 世界的新手。如果需要更多信息,请发表评论! :)

【问题讨论】:

  • 与原始问题无关,但是,我只想补充:如果您使用git,请配置gitignore,这样这些文件将不会被推送

标签: java tomcat intellij-idea project-structure


【解决方案1】:

*.iml 文件与您的代码/Java 无关。它是 Intellij 在项目根文件夹中创建的隐藏文件,其中包含您的模块信息。这就是您不应该对此类文件进行版本控制的原因,毕竟使用不同 IDE 的其他开发人员不需要它们。

如果您关闭了 Intellij,我认为没有办法恢复相同的文件,但另一方面,重新生成新的 .iml 文件非常简单:

基于 Gradle 的项目

点击工具栏中的Sync Project with Gradle Files按钮(这个);

基于 Maven 的项目

转到文件>项目结构>模块>添加>导入模块>(选择您的模块基目录)>确定

编辑:

我之前的回答是基于 IntelliJ 14 的,似乎在较新的版本上发生了一些变化,正如 cmets 上的 hBrentBeC 所指出的那样。

使用 Intellij Community 2018.1 进行此更新:

基于 Maven 的项目

过程保持不变,我看到的唯一区别是 Add 图标不再是绿色了。也可以尝试删除rootFolder/.idea/modules.xml 并在之后添加模块以重置有关先前配置的所有信息。

基于 Gradle 的项目

应在 Gradle 工具窗口(视图 > 工具窗口 > Gradle)上使用“刷新所有 Gradle 项目”,由标准刷新图标表示。

【讨论】:

  • 我觉得那个按钮现在看起来有点不同了。我在 gradle 窗口中点击了“刷新所有 gradle 项目”和“执行 gradle 任务”。不确定是哪一个生成了 iml 文件,但之后我就没事了。
  • 现在的设置不同了。我仍然看不到如何在 maven 项目中重新生成 impl 文件。
  • @BeC 我刚刚下载了 Intellij 的最新 CE 版本,对于 Maven 项目,相同的过程仍然重新生成了 *.iml 文件。 + 按钮不再是绿色的,但是在单击它并从现有源导入模块后它就可以工作了。也许您可以尝试删除 .idea/modules.xml 文件,然后再将模块添加回 Intellij 以重新生成所有内容。请让我知道它是否有效。
  • 没有sync project按钮
  • @PrateekGupta Pycharm 到底发生了什么?我觉得gradle问题不适用于python
【解决方案2】:

删除 .iml 文件后,我的 mvn 项目也没有在 IntelliJ IDEA 中正确加载。我是这样解决的:

  1. 封闭的 IntelliJ IDEA
  2. 删除了我的项目目录中的 .idea 目录。
  3. 我重新打开了 IntelliJ IDEA 和 .idea 目录,不久之后 IntelliJ 自动重新创建了 .iml。

为我修复。

【讨论】:

  • 你拯救了我的一天!
  • 谢谢!在我不得不做的事情之后:文件->使缓存无效/重新启动
  • 上帝保佑你@tuiz!
  • 这也解决了我的问题!
  • 其他方法假定为 maven 或 gradle。我使用的 IntelliJ 没有任何一个,这对我有用。事实上,当我使用“项目设置”向导重命名项目时,它并没有更新 .iml,这样做让我得到了一个具有正确名称的新 .iml 文件。
【解决方案3】:

对于 Maven 项目:

  • 打开 Maven 工具窗口(对于 intellij 用户 - 右键单击​​项目名称并向下滚动到底部以找到 maven 工具窗口)(用此图标表示:
  • 点击Reimport All Maven Projects按钮(用这个表示 图标:)。

说明: https://www.jetbrains.com/help/idea/maven-projects-tool-window.html

【讨论】:

  • 这是唯一让我的多层 Maven 项目被导入为 Maven 项目/模块的指令。谢谢。
【解决方案4】:

如果删除*.iml文件和.idea文件夹并关闭IntelliJ,下次再次打开项目时会重新生成。

【讨论】:

    【解决方案5】:

    我还意外删除了 .iml 文件。 解决方法如下:

    1. 封闭的 IntelliJ IDEA
    2. 重新打开程序
    3. 选定的导入项目 -> 从现有来源创建项目
    4. 单击下一步。 它为我创建了正确的项目配置。

    【讨论】:

      【解决方案6】:

      如果您无法通过最受欢迎的方式恢复它,您可以简单地复制另一个 .iml 文件,将其粘贴到需要 .iml 文件的包*中,然后将 .iml 文件重命名为包的名称.如果它是相同的类型(在我的情况下为 UTF-8),这应该可以工作。

      *通过进入包文件复制 .iml 文件,右键单击包名称,然后按粘贴。

      您可以在左侧任务栏中完成此操作。我准备好了a video demonstration(没有音频)。

      【讨论】:

        【解决方案7】:
        1. 删除项目中的 .idea 文件夹
        2. 重新导入项目

        它将再次为配置编译和构建 .idea 文件夹。

        【讨论】:

        • 最简单的解决方案。当您的项目既不是基于 gradle 也不是基于 maven 时,这非常有效。谢谢!
        • 执行此操作时,您将丢失窗口设置、运行配置和其他内容。因此,请跟踪该信息,以便您可以重建它。
        【解决方案8】:

        Gradle 刷新在我的情况下不起作用。几个项目文件夹也丢失了,所以我也无法复制/粘贴新的 .iml 文件。

        但是,当我重新打开项目时,选择 Delete Existing Project and Import,项目能够重新创建所有 .iml 文件。

        【讨论】:

        • Delete Existing Project?
        • 是的,但它不会删除您的项目。它将在 IntelliJ 中正确关闭您的项目,然后从头开始重新打开它。通常你不想这样做,因为以这种方式重新打开项目需要更长的时间。但是当事情不起作用时 - 它可能会对您有所帮助。
        • 值得一提的是,这样做也会清除您的运行/调试配置。所以你必须重新创建这些。
        【解决方案9】:

        使用项目名称创建一个新文件并将其粘贴。如果您正在使用颤振。

        <?xml version="1.0" encoding="UTF-8"?>
        <module type="JAVA_MODULE" version="4">
          <component name="NewModuleRootManager" inherit-compiler-output="true">
            <exclude-output />
            <content url="file://$MODULE_DIR$">
              <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
              <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
              <excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
              <excludeFolder url="file://$MODULE_DIR$/.idea" />
              <excludeFolder url="file://$MODULE_DIR$/.pub" />
              <excludeFolder url="file://$MODULE_DIR$/build" />
            </content>
            <orderEntry type="sourceFolder" forTests="false" />
            <orderEntry type="library" name="Dart SDK" level="project" />
            <orderEntry type="library" name="Flutter Plugins" level="project" />
            <orderEntry type="library" name="Dart Packages" level="project" />
          </component>
        </module>
        

        【讨论】:

        • project name 是什么意思?
        • @IgorGanapolsky 尝试项目文件夹名称:因此 path/to/projects/my-project 意味着该文件夹中的 .iml 文件应称为 my -project.iml。这至少是我导入项目时 AndroidStudio 自动创建的内容
        【解决方案10】:

        我正在使用 phpstorm 和具有多个 repos 的项目。

        我的情况是,由于未指定的原因,我删除了“主”项目目录(并再次克隆)。这导致下一个项目目录成为 main ,我猜。还有旧的“main”将从 phpstorm 的项目视图中删除。

        尝试打开新克隆的项目并附加后,它失败了。附加的新克隆项目中的新 .iml 文件很好(尽管它报告失败),所以我进入下一个项目的 .idea 目录,发现 .iml 文件如下所示:

        <?xml version="1.0" encoding="UTF-8"?>
        <module type="WEB_MODULE" version="4">
          <component name="NewModuleRootManager">
            <content url="file://$MODULE_DIR$" />
            <orderEntry type="inheritedJdk" />
            <orderEntry type="module" module-name="Project1" />
            <orderEntry type="sourceFolder" forTests="false" />
            <orderEntry type="module" module-name="Project3" />
            <orderEntry type="module" module-name="Project4" />
            <orderEntry type="module" module-name="Project1" />
        </component>
        </module>
        

        所以我退出了phpstorm,从第二个项目iml文件中删除了所有Project1条目,重新启动IDE,再次打开并附加新克隆的project1,突然就好了。

        【讨论】:

          猜你喜欢
          • 2020-03-23
          • 1970-01-01
          • 1970-01-01
          • 2016-06-15
          • 2015-06-06
          • 1970-01-01
          • 2015-07-19
          • 2017-01-02
          • 2011-01-13
          相关资源
          最近更新 更多