IntelliJ IDE | .iml Файл потерян или удален

На прошлой неделе я работал над проектом Java EE с IntelliJ IDE.

Сегодня: когда я запустил свой IntelliJ 2016.1, он дал мне ошибку:

Ошибка загрузки проекта

Не удается загрузить модуль FirstWebApp

Когда я посмотрел на детали, он сказал, что не может найти мой файл FirstWebApp.iml и поэтому не может загрузить мой проект.

Я проверил мою структуру проекта в проводнике, и там было все, кроме файла iml. Я также посмотрел на корзину, но не смог найти ее там.

  • Как такой файл может просто исчезнуть?

  • Как я могу вернуть свой файл IML, если это возможно?

  • Что делают эти IML файлы?

Я новичок в мире Java. Если вам нужна дополнительная информация, просто комментируйте!:)

1 ответ

Решение

*.iml файлы не имеют ничего общего с вашим кодом /Java. Это скрытый файл, созданный Intellij в корневой папке вашего проекта, который содержит информацию о вашем модуле. По этой причине вам не следует создавать версии файлов такого типа, поскольку другим разработчикам, использующим другую IDE, они не понадобятся.

Если вы закрыли Intellij, я думаю, что нет способа вернуть тот же файл, но, с другой стороны, довольно просто восстановить новый файл.iml:

Gradle-проект

Нажмите на Sync Project with Gradle Files кнопка (эта ) на панели инструментов;

Maven основанный проект

Перейдите в Файл> Структуры проекта> Модули> Добавить (нажмите зеленую кнопку +).

Редактировать:

Мой предыдущий ответ был основан на IntelliJ 14, и, похоже, некоторые вещи изменились в более новых версиях, на что указывают hBrent и BeC в комментариях.

Используя Intellij Community 2018.1 для этого обновления:

Maven основанный проект

Процедура остается прежней, единственное отличие, которое я видел, это то, что значок " Добавить" больше не зеленый. Можно также попробовать удалить rootFolder/.idea/modules.xml и добавление модулей впоследствии для сброса всей информации, касающейся предыдущих конфигураций.

Gradle-проект

Следует использовать "Обновить все проекты Gradle" в окне "Инструменты Gradle" ("Просмотр"> "Окна инструментов"> "Gradle"), представленном стандартным значком обновления.

Мой проект mvn также некорректно загружался в IntelliJ IDEA после того, как я удалил файл.iml. Я исправил это так:

  1. Закрытая IntelliJ IDEA
  2. Удален.idea dir, который был в моем проекте dir.
  3. Я снова открыл IntelliJ IDEA и.idea dir, а также.iml через некоторое время был автоматически воссоздан IntelliJ.

Исправлено для меня.

Для проектов Maven:

  • Откройте Maven Window Tool (указывается с этим значком: )
  • Нажмите кнопку "Повторно импортировать все проекты Maven"(обозначена этим значком:) .

Инструкции: https://www.jetbrains.com/help/idea/maven-projects-tool-window.html

Если вы удалите *.iml файл и .idea папку и закройте IntelliJ, он будет повторно сгенерирован, когда вы снова откроете проект в следующий раз.

Я также случайно удалил файл.iml. Вот как это разрешилось:

  1. Закрытая IntelliJ IDEA
  2. Повторно открытая программа
  3. Выбранный проект импорта -> Создать проект из существующих источников
  4. Нажмите "Далее". Это создало для меня правильную конфигурацию проекта.
  1. удалить папку.idea внутри вашего проекта
  2. повторно импортировать проект

он снова скомпилирует и создаст папку.idea для конфигурации.

Если вы не можете восстановить его наиболее популярным способом, вы можете просто скопировать другой файл.iml, вставить его в пакет *, для которого требуется файл.iml, и переименовать файл.iml в имя пакета. Это должно работать, если это тот же тип (в моем случае UTF-8).

* Скопируйте файл.iml, перейдя в файлы пакета, щелкнув правой кнопкой мыши имя пакета и нажав Вставить.

Вы можете сделать это в левой панели задач. Я подготовил демонстрацию видео (нет звука).

В моем случае обновление Gradle не сработало. Также отсутствовало несколько папок проекта, поэтому я не мог копировать / вставлять новые файлы.iml.

Однако когда я открыл проект заново, выбрав Delete Existing Project and Import, проект смог воссоздать все файлы.iml.

Я использую phpstorm и проект с несколькими репозиториями.

Мой сценарий заключался в том, что по неуказанным причинам я удалил "основной" каталог проекта (и снова клонировал). В результате, я думаю, следующий каталог проекта стал основным. А также старый "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, удалил все записи Project1 из второго iml-файла проекта, перезапустил IDE, снова открыл и прикрепил вновь клонированный project1, и внезапно все стало нормально.

Создайте новый файл с названием проекта и вставьте его. Если вы работаете с флаттером.

<?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>
Другие вопросы по тегам