На Eclipse, что делает "Предпочтения → Общие → Рабочее пространство → Обновить с помощью собственных перехватчиков или опросов"?

Этот флажок установлен на Eclipse:

Настройки → Общие → Рабочее пространство → Обновить с помощью собственных перехватов или опроса

Документация Eclipse гласит:

Если эта опция включена, ресурсы рабочей области будут синхронизированы с соответствующими ресурсами в файловой системе автоматически используя собственные поставщики обновления (в Windows) или опрос механизм.

Из документации и описания флажка можно предположить, что для получения уведомлений о изменениях файлов есть какой-то привязчик ОС, который Eclipse использует. Похоже, что эта функция эмулируется в ОС, отличных от Windows, используя опрос.

Мои вопросы:

  • Это действительно то, что делает Eclipse? Я хочу знать, если, проверив этот параметр, у меня будет поток, постоянно проверяющий файловую систему. Мои файлы меняются извне, но примерно 4 раза в день, и чтобы эта функция выглядела отлично для программистов, опрос должен был проверять файловую систему раз в минуту.
  • Это действительно работает только на Windows? Если я использую Eclipse в Linux, значит, это означает, что Eclipse перейдет в режим опроса?
  • Наконец, и что еще более важно, если Eclipse делает это, то как это сделать? JNI?

Ответ 1

Да, это действительно то, что делает Eclipse. Для Mac или Linux в настоящий момент используется опрос.

Существует точка расширения org.eclipse.core.resources.refreshProviders, которая может использоваться для предоставления кода обновления для каждой платформы, и люди написали тестовые плагины для Mac и Linux, но они не находятся в продукте (см. https://bugs.eclipse.org/bugs/show_bug.cgi?id=108697 и https://bugs.eclipse.org/bugs/show_bug.cgi?id=237344)

Источник для этого org.eclipse.core.internal.refresh.MonitorManager, PollingMonitor обновляет опрос.

org.eclipse.core.internal.resources.refresh.win32.Win32RefreshProvider обновляет Windows, используя собственные методы через JNI (он находится в плагине только для Windows).

org.eclipse.core.internal.resources.refresh.win32.Win32Monitor и Win32Natives содержат основной код.

Ответ 2

Я выяснил, что опция "Обновить с помощью собственных перехватов или опроса" была связана с старым способом:

Предыдущие версии Eclipse полагались на собственных поставщиков обновлений (в Windows) или на механизм опроса, чтобы поддерживать рабочее пространство синхронизируется с базовой файловой системой. Эта возможность может быть включена, выбрав Refresh using native крючки или опрос на странице предпочтений Предпочтения > Общие > Рабочая область.

Теперь доступен новый легкий механизм. файлы обнаружено, что оно не синхронизировано рабочей областью, например, в то время как доступ к содержимому файла редактором, будет автоматически асинхронно обновляется. Если вы хотите обновить файлы таким образом, перейдите к Открывает страницу настроек "Настройки" > "Основные" > "Рабочая область" и выберите Обновить доступ.

Отныне я пойду только с Refresh on access.

Ответ 3

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