Может ли Eclipse обновлять ресурсы автоматически?

Eclipse (3.4.2 с PyDev) имеет дело с внешними ресурсами (файлами, которые были отредактированы вне IDE) иначе, чем другие среды, которые я использовал, где только ресурсы с открытым редактором считаются out- из-синхронизации. В Eclipse любой ресурс может выйти из синхронизации.

Это означает, что когда я выполняю поиск после того, как какой-либо файл изменился за пределами Eclipse, я получаю диалоговое окно с сообщением о том, что файлы не синхронизированы, даже если у них нет открытых редакторов. Насколько я могу судить, нет глобальной команды обновления, поэтому я вынужден прочитать имена проектов (у меня есть несколько проектов) в диалоговом окне ошибки и сделать щелчок правой кнопкой мыши + обновление для каждого из них.

Я проверил параметр Refresh Automatically в Settings > General > Workspace, но это не влияет. Есть ли способ заставить Eclipse всегда просто загружать неактивные ресурсы с диска?

Ответ 1

Эта проблема будет исправлена ​​в Eclipse 3.7 (Indigo). В то время как "Обновление автоматически" в конечном итоге возвращает ресурсы в синхронизацию, крюк обновления существует только для Windows, поэтому на Linux и Mac OS он должен периодически проверять файловую систему.

Из 3.7 появилось новое предпочтение Settings > General > Workspace > Refresh On Access (aka Lightweight Refresh). Это предпочтение заставляет Eclipse автоматически обновлять ресурсы, когда обнаруживает, что они "не синхронизированы". При открытии, чтении или поиске файлов это предотвратит возникновение ошибок при отсутствии синхронизации.

Смотрите также: https://bugs.eclipse.org/303517

Ответ 2

Я думаю, что если вы нажмете на проект node в Project Explorer и нажмите F5 или щелкните правой кнопкой мыши и выберите Refresh, все ресурсы для этого проекта будут обновлены. Кроме того, если вы CTRL + щелкните по нескольким проектам, вы сможете одновременно обновлять несколько проектов.

Один клик по проекту, CTRL + A, чтобы выбрать все, и F5 должен делать именно то, что вам нужно - обновить все.

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


Я заметил, что этот ответ обычно проголосует. Я хотел бы указать, что вопрос относится к конкретной версии Eclipse: 3.4.2. На самом деле не было автоматического метода обновления ресурсов вне синхронизации до версии 3.7 Indigo Eclipse, как упоминалось в ответе Джеймса Блэкберна. Метод, описанный в этом ответе, является единственным способом достижения этого в версии 3.4.2 (и любой другой версии до 3.7 Indigo).

Ответ 3

Проблема с отсутствием синхронизации распространена в среде IDE eclipse, поэтому вам нужно проверить эту опцию windows → preference → Workspace → refresh, используя собственные перехватчики или опрос.

Ответ 4

Существует глобальное обновление - не имеет ничего (или всего), выбранного в проводнике пакетов, и нажмите F5 (или щелкните правой кнопкой мыши пустое пространство и выберите "Обновить" ). Конечно, это может занять довольно много времени, если у вас большие проекты.

Ответ 5

Eclipse Helios обладает встроенной функцией обновления в разделе "Настройки" > "Основные" > "Рабочая область". Он находится в том же месте, где вы отключите автоматические сборки. Выберите обновление автоматически. Плагин с такой же функциональностью - это плагин Filesync для Andrei Loskutov. Адрес сайта обновления: http://andrei.gmxhome.de/eclipse/. Во время установки выберите плагины Eclipse 3.5-3.7 > FileSync.

Ответ 6

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

В принципе, вам нужно отменить все в своем проводнике проекта и нажать F5. Чтобы сделать это, нажмите Ctrl + щелкнуть выбранный ресурс в проводнике проекта и нажать F5.

Ответ 7

Учитывая, что Java 7 имеет api для перехватов файловой системы, можно подумать, что в Eclipse лучше справиться с обновлением.

Изменить: На самом деле есть плагин, который использует этот механизм: https://github.com/psxpaul/EclipseJava7Refresher

Ответ 8

Возможно, вам нужно добавить запрос функции на сайт eclipse:

https://bugs.eclipse.org/bugs/

Я думаю, что было бы неплохо добавить предпочтение для автоматического обновления устаревших ресурсов.

Ответ 9

Глобальное обновление действительно отсутствует в Eclipse. Вышеупомянутая процедура с выбором всех проектов и последующим обновлением (например, F5) не работает, если у вас есть закрытые проекты, включенные в ваш выбор. Это означает, что если у вас есть 1/2 из ваших многочисленных проектов, как я делаю, вы можете вручную нажать Ctrl-клик по своим десяткам проектов. Это довольно болезненно. Я хочу, чтобы Eclipse просто игнорировал закрытые проекты.

Ответ 10

Да, Refresh on Access давно запоздал... ответы на этот и подобные запросы обычно предлагались для включения глобального автоматического обновления, что может занять возраст для больших удаленных проектов. Фактически есть те, кто сказал бы, что Refresh on Access должен был быть оригинальным (< 3.x) поведением по умолчанию...

Ответ 11

Мне удалось решить эту проблему, создав новую конфигурацию запуска "внешнего инструмента", которая выполняет пустой пакетный файл. В конфигурации запуска вы можете обновить рабочую область после завершения. Затем я создал макрос, используя Practically Macro, который: 1) выполняет последнюю внешнюю настройку запуска инструмента (обновляет рабочую область), затем 2) выполняет последнюю конфигурацию запуска отладки (работает мое приложение). Если вы снимите флажок "Выделить консоль", то завершенная внешняя запись инструмента не будет отображаться в окне отладки.

Ответ 12

Даже если решения, предложенные другими perso, действительно правильны, у вас есть плагин Refresh All" для Eclipse. Просто добавьте Обновить страницу в список обновлений сайтов Eclipse, чтобы установить его в вашу среду IDE.