16

Eclipse には次のチェック ボックスがあります。

設定 -> 一般 -> ワークスペース -> ネイティブ フックまたはポーリングを使用して更新

Eclipse のドキュメントには次のように書かれています。

このオプションをオンにすると、ネイティブの更新プロバイダー (Windows の場合) またはポーリング メカニズムを使用して、ワークスペース リソースがファイル システム内の対応するリソースと自動的に同期されます。

ドキュメントとチェック ボックスの説明から、Eclipse がファイルの変更に関する通知を取得するために使用する、ある種の OS フックがあることが示唆されます。そして、この機能はポーリングを使用して Windows 以外の OS でエミュレートされているようです。

私の質問は次のとおりです。

  1. これは本当に Eclipse が行っていることですか? このオプションをチェックすることで、スレッドがファイルシステムを常にチェックするようになるかどうかを知りたいです。私のファイルは外部から変更されますが、1 日に 4 回ほど変更されます。この機能をプログラマーに適切に見せるには、ポーリングでファイル システムを 1 分に 1 回程度チェックする必要があります。
  2. それは本当にWindowsでしか機能しませんか?Linux で Eclipse を使用している場合、必ずしも Eclipse がポーリング モードになることを意味しますか?
  3. 最後に、さらに重要なことは、Eclipse がそれを行う場合、どのように行うのでしょうか? JNI?
4

3 に答える 3

6

「ネイティブフックまたはポーリングを使用して更新する」オプションがこれを行う元の方法であることがわかりました。

以前の Eclipse バージョンは、ネイティブの更新プロバイダー (Windows の場合) またはポーリング メカニズムに依存して、ワークスペースを基盤となるファイル システムと同期させていました。この機能は、ネイティブ フックまたはポーリングを使用して更新を選択することで引き続き有効にすることができます。

新しい軽量メカニズムが利用可能になりました。たとえば、エディターがファイル コンテンツにアクセスしているときに、ワークスペースによって非同期であることが検出されたファイルは、自動的に非同期で更新されます。この方法でファイルを更新する場合は、[設定] ページを開く [設定] > [全般] > [ワークスペース] に移動し、[アクセス時に更新] を選択します。

これからは、アクセス時に更新のみを使用します。

于 2014-02-19T10:15:24.103 に答える
1

「ネイティブ フックまたはポーリングを使用して更新する」を使用すると、外部エディタを使用してファイルを編集したときにプロジェクトのビルドが更新されないという問題を解決できます。 問題の詳細

于 2015-07-27T02:24:09.327 に答える