На 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
"Обновить с помощью собственных перехватчиков или опроса" может решить проблему с построением проекта, не обновляется, когда файлы редактируются с использованием внешних редакторов.
подробнее