智能 IDE | .iml 文件丢失或删除

IntelliJ IDE | .iml File lost or deleted

上周我正在使用 IntelliJ IDE 进行 Java EE 项目。

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

加载项目时出错

无法加载模块 FirstWebApp

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

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

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

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

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

Gradle 基于项目

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

基于 Maven 的项目

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

编辑:

我之前的回答是基于 IntelliJ 14 的,似乎新版本的某些内容发生了变化,正如 hBrent and BeC 在评论中指出的那样。

使用 Intellij Community 2018.1 进行此更新:

基于 Maven 的项目

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

Gradle 基于项目

应在 Gradle 工具 Window 上使用 "Refresh all Gradle projects"(视图 > 工具 Windows > Gradle),由标准刷新图标表示。

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

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

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

使用项目名称创建一个新文件并粘贴它。如果您正在使用 flutter。

<?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>

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

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

对于 Maven 项目:

  • 打开 Maven 工具 Window(对于 intellij 用户 - 右键单击​​项目名称并向下滚动到底部以找到 Maven 工具 window)(用这个图标表示:
  • 单击 重新导入所有 Maven 项目 按钮(用这个表示 图标:).

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

删除 .iml 文件后,我的 mvn 项目也无法在 IntelliJ IDEA 中正确加载。我是这样修复的:

  1. 关闭 IntelliJ IDEA
  2. 删除了我项目目录中的 .idea 目录。
  3. 我重新打开了 IntelliJ IDEA 和 .idea 目录,并且 .iml 也在一段时间后由 IntelliJ 自动重新创建。

为我修好。

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

我还不小心删除了 .iml 文件。 解决方法如下:

  1. 关闭 IntelliJ IDEA
  2. 重新打开程序
  3. 选定的导入项目 -> 从现有源创建项目
  4. 点击下一步。 它为我创建了正确的项目配置。
  1. 删除项目中的 .idea 文件夹
  2. 重新导入项目

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

我正在使用 phpstorm 和具有多个存储库的项目。

我的情况是,由于未指明的原因,我删除了“主”项目目录(并再次克隆)。我猜这导致下一个项目目录成为 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,突然就好了。