it-roy-ru.com

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

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

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

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

154
DNS

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

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

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

193
James Blackburn

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

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

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


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

28
Thomas Owens

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

16
DON

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

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

4
bronsted

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

4
user466206

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

4
Michael Borgwardt

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

https://bugs.Eclipse.org/bugs/

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

3
David

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

В основном вам нужно отменить выбор всего в вашем проводнике проекта и нажать F5. Для этого нажмите Ctrl + клик по выбранному ресурсу в проводнике проекта и нажмите F5.

3
Gediminas Aleknavičius

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

3
Karol

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

2
MikeW

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

2
NateS

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

1
Romain Linsolas