Избегайте «ресурс не синхронизирован с файловой системой»


267

Я разрабатываю код Java с Eclipse и регулярно получаю это сообщение:

ресурс не синхронизирован с файловой системой.

Щелчок правой кнопкой мыши> Обновить всегда очистит это.

Но почему Eclipse не может обновляться автоматически, когда находит это условие? Есть ли случаи, когда вы хотите, чтобы ресурс был не синхронизирован?

Если есть такие условия, и они не применимы к моей работе, есть ли способ заставить Eclipse автоматически обновляться при обнаружении этого состояния? (Я ценю, что он должен обновляться настолько, насколько это необходимо для нормальной разработки, чтобы повысить производительность для разработчиков-людей.)

ОБНОВЛЕНИЕ (2012-06-25): В моем последнем обновлении (Версия: Indigo Release Build id: 20110615-0604) больше не отображаются Предпочтения - Общие - Рабочая область - Автоматическое обновление Есть опция «Обновить при доступе» - следует ли использовать это?


Почему вы получаете сообщение? Вы можете потерять работу, если не будете осторожны.
Торбьерн Равн Андерсен

1
Я всегда получаю это сообщение при поиске в рабочей области, потому что проект Серверы (в веб-инструментах) содержит файлы журналов, которые обновляются вне затмения. До сих пор я не нашел никакого решения, кроме автоматического обновления, но это дает другие проблемы (в частности: когда запускается какая-то сборка Ant, Eclipse обновит половину сборки Ant и все испортит).
Стейн де Витт

возможно просто лизнуть проект и выбрать "обновить"?
Юнчен Лю

Глупый вопрос: почему обязательна «лишняя копия» ресурса? Всем ли это обязательно нужно с сопутствующим шансом «рассинхронизироваться».
nsandersen

Ответы:


322

Вы можете включить это в Window - Preferences - General - Workspace - Refresh Automatic (называется Refresh с использованием собственных перехватов или опроса в новых сборках)

Настройки Eclipse «Обновление с использованием собственных хуков или опросов» - скриншот

Единственная причина, по которой я могу думать, почему это не включено по умолчанию, связана с производительностью.

Например, автоматическое обновление исходных папок может вызвать сборку рабочей области. Возможно, некоторые люди хотят большего контроля над этим.

На сайте Eclipse также есть статья об автоматическом обновлении.

По сути, нет внешнего триггера, который уведомляет Eclipse об изменениях файлов за пределами рабочей области. Вместо этого Eclipse использует фоновый поток для отслеживания изменений файлов, которые могут привести к проблемам с производительностью в больших рабочих пространствах.


+1 Это происходит только во время этого состояния? Или это произойдет достаточно, чтобы повлиять на меня в другом месте?
peter.murray.rust

1
У меня есть Настройки - Общие - Рабочая область - Обновлять автоматически. Это то же самое?
peter.murray.rust

1
Любой способ заставить это автоматически принять изменения от файловой системы для открытых окон редактора, у которых нет несохраненных изменений?
Леопд


14
Теперь он называется «Обновить с помощью встроенных перехватчиков или опросов» (Indigo SR1).
Оливер Бок

37

Просто щелкните правой кнопкой мыши по файлу или проекту и нажмите «Обновить». Ошибка исчезнет. Я также столкнулся с той же проблемой, и это сработало для меня.


20
ОП упомянул, что в своем вопросе «Обновить» это всегда прояснит ». Проблема в том, что это невероятно раздражает при работе со сложными проектами или в сочетании с внешними по отношению к Eclipse инструментами, которые изменяют файловую систему.
ryanbrainard


12

Для новой версии Indigo предпочтения изменяются на «Обновить при доступе» и с подробным объяснением: автоматически обновлять изменения внешнего рабочего пространства при доступе через рабочее пространство.

Поскольку «ресурс не синхронизирован с файловой системой», эта проблема возникает, когда я использую внешнее рабочее пространство, поэтому после выбора этой опции проблема решена.


1
Это избавилось от сообщения. Спасибо
Исаффи

5

Это происходит со мной все время.

Перейдите в журнал ошибок, найдите исключение и откройте несколько уровней, пока не увидите что-то более похожее на основную причину. Это говорит "Ресурс не синхронизирован с файловой системой"?

Конечно, при переименовании пакетов Eclipse должен перемещать файлы в файловой системе. Очевидно, что происходит то, что позже он обнаруживает, что что-то, что, по его мнению, нужно очистить, было переименовано, не может его найти, выдает исключение.

Есть несколько вещей, которые вы можете попробовать. Сначала перейдите в Window: Preferences, Workspace и включите «Автоматически обновлять». Теоретически это должно решить проблему, но для меня это не так.

Во-вторых, если вы выполняете большой рефакторинг с подпакетами, выполняйте подпакеты по одному, снизу вверх, и явно обновляйте файловую систему после переименования каждого подпакета.

В-третьих, просто игнорируйте ошибку: когда появится диалоговое окно с ошибкой, нажмите «Прервать», чтобы сохранить частичное изменение, а не откатывать его обратно. Попробуйте снова и снова, и вы можете обнаружить, что можете выполнить всю операцию, используя несколько попыток.


Некоторые из моих импортных файлов были повреждены после этого, но быстрый « Организованный импорт» тоже это исправил.
z0r

Мне нужно было сделать это (игнорировать ошибку и повторить попытку), просто переместив класс в новый пакет.
z0r

1

Если это происходит при попытке удалить папку (на * nix), и «Обновить» не помогает, откройте терминал и найдите символическую ссылку под папкой, которую вы пытаетесь удалить, и удалите ее вручную. Это решило мои проблемы.


1

Когда вы открываете рабочую область Eclipse из прозрачного представления и пытаетесь переименовать проект, вы часто получаете всплывающее предупреждение ... «Ресурс« проект »не синхронизирован с файловой системой». Если обновление проекта не устранило проблему, сделайте следующее решение: a. Открытое рабочее пространство БЕЗ нахождения в виде b. Выберите проект в Project Explorer c. ClearCase -> Associate Project (теперь проект должен выглядеть как project []) d. Щелкните правой кнопкой мыши проект -> Обновить (подпапки vob теперь должны быть пустыми) e. Щелкните правой кнопкой мыши проект -> Переименовать ... f. Введите новое имя

Теперь вы можете закрыть рабочее пространство, снова открыть его в представлении и обновить проект. Вы также можете отделить проект, если вы предпочитаете, чтобы проект не был связан с VOB.


Clearcase украл мою собаку.
Доминик Черизано

1

Небольшой намек. Сообщение часто появляется во время операции переименования. Быстрый обходной путь для меня - нажать Ctrl-Y(повторить ярлык) после подтверждения сообщения. Это работает, только если переименование затрагивает один файл.


Что делает Ctrl-Y?
z0r

1
Ctrl-Y - это «повторить». В этом конкретном случае вы переименовываете что-то, затем затмение сталкивается с проблемой и отменяет операцию переименования. Нажатие Ctrl-Y восстанавливает попытку переименования.
Уотсон

Ах я вижу. Не в убунту; это Ctrl-Shift-Z. Попробуйте добавить объяснение, почему вы нажимаете Ctrl-Yна свой ответ :)
z0r

1

Если вы являетесь обычным пользователем Eclipse, вы могли бы получить эту ошибку много раз. Ошибка просто говорит: «Вы внесли изменения в файлы в вашем рабочем пространстве извне затмения». Простейшим решением было бы выбрать проект и нажать F5 (щелкните правой кнопкой мыши -> Обновить).

если вам нужно больше объяснений, вы можете прочитать с этого сайта


0

Мне не удалось устранить эту ошибку ни обновлением, ни включением функции «собственного опроса» в рабочей области. Оказалось, мой проект также был открыт в двух случаях затмения. Как только я закрыл другой экземпляр, ошибка исчезла. Поэтому убедитесь, что ваш проект открыт только в одном месте, если вы видите эту ошибку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.