存取限制

Eclipse 3.1 執行時期提供外掛程式開發人員一個選項,可依個別套件控制外掛程式碼對下游外掛程式的可見性。

套件可以分類成下列其中一項:

  1. 可存取
  2. 禁止
  3. 內部
  4. 內部伙伴

PDE 會在編譯時期將這些執行時期可見性規則,轉換成編譯器存取限制規則。因此,可見性規則的違規會由編譯器標示成警告或錯誤, 視該違規的嚴重性而定。

藉由這項支援於編譯時期的可用性,使用者絕不會在執行時期因為有類別載入錯誤而吃驚, 且在參照內部類型時一律會察覺。

 

可存取的套件

可存取的套件可被下游外掛程式無條件地看見。雖然 API 套件必須完全屬於這個種類,但還是完全由開發人員決定外掛程式匯出的哪些其他套件應該給予這個層次的可見性。

為了將套件宣告成可存取,您必須將其列在外掛程式 Manifest 編輯器之執行時期的匯出的套件區段,並依現狀保留預設可見性設定。

可存取的套件

 

禁止的套件

您可以在外掛程式 Manifest 編輯器之執行時期頁面的匯出的套件區段中, 從清單中排除套件來隱藏套件,使其永遠不讓下游外掛程式看見。

如果參照了禁止套件中的類型,會導致在執行時期產生類別載入錯誤。

 如果要避免這類不佳的情況,請執行下列動作:

  1. 編譯器會以 ERROR 標出禁止套件的參照。
  2. 來自禁止套件的類型不可在內容輔助中當成提議。

附註:

  1. Eclipse SDK 中的所有外掛程式會在「匯出的套件」區段中列舉其所有套件。 因此,SDK 中的套件皆不會是禁止存取。
  2. 禁止參照的嚴重性層次設定在 Java > 編譯器 > 錯誤/警告 > 已棄用和受限的 API 喜好設定頁面。

    強烈建議您將禁止參照的嚴重性維持「錯誤」。

    禁止喜好設定

內部套件

內部套件是不打算供下游外掛程式使用的套件。 依預設,這些套件可被下游外掛程式看見。

僅當 Eclipse 是以嚴格模式啟動(亦即,當您以 -Dosgi.resolverMode=strict VM 引數啟動)時, 才會隱藏內部套件不讓下游外掛程式看見。

內部套件必須列在外掛程式 Manifest 編輯器之執行時期頁面的匯出的套件區段中, 並選取隱藏選項。

不建議存取

有兩種情況會不建議下游外掛程式參照內部套件:

不建議存取

不建議內容輔助

不建議參照的嚴重性層次可以設定在 Java > 編譯器 > 錯誤/警告 > 已棄用和受限的 API 喜好設定頁面。

不建議喜好設定

 

內部伙伴套件

外掛程式能夠授予其內部套件的完整存取權給指定的 "伙伴" 外掛程式是很重要的。比方說, PDE 程式碼會分散在多個外掛程式中,因此 org.eclipse.pde.ui 外掛程式應該有 org.eclipse.pde.core 之內部套件的完整存取權。

在下例中,伙伴(org.eclipse.pde 和 org.eclipse.pde.ui 外掛程式)對 org.eclipse.pde.core 外掛程式的 org.eclipse.pde.internal.core.bundle 套件有完整存取權。

伙伴

編譯器允許伙伴自由參照 org.eclipse.pde.internal.core.bundle 套件中的任何類型。

在另一方面,如果任何其他的外掛程式參照了 org.eclipse.pde.internal.core.bundle 套件中的類型,編譯器會依照上一節所述, 將該參照標示為「不建議參照」。

 

如何啟用存取限制

如果要運用 PDE 存取限制支援, 唯一的需求是論及的外掛程式要包含 OSGi 軟體組 manifest.mf。 管理外掛程式類別路徑的 PDE 則會負責其餘的部分。

如果外掛程式不含 manifest.mf 檔,可以依下列方式建立該檔案:

  1. 在外掛程式 Manifest 編輯器中開啟 plugin.xml。
  2. 在概觀頁面的外掛程式內容區段中,按一下建立 OSGi 軟體組 manifest 鏈結。

轉換成 manifest.mf

 

視察存取規則

您可以在外掛程式專案的 Java 建置路徑內容頁, 視察由 PDE 強制用於每一個類別路徑項目的存取限制規則。

Java 建置路徑內容