存取規則

Eclipse 3.1 執行時期向外掛程式開發人員提供了在個別套件的基礎上,控制外掛程式碼相對於下游外掛程式之可見性的選項。

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

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

PDE 會在編譯時期將這些執行時期可見性規則,轉換成編譯器存取限制規則。因此,編譯器會將違反可見性標示為警告或錯誤,這會隨著這項違規的嚴重性而不同。

在編譯時期的這類支援之下,永遠不會有執行時期類別載入錯誤所帶來的意外,內部類型參照也一律是可知的。

 

可存取的套件

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

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

可存取的套件

 

禁止的套件

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

參照禁止之套件中的類型,會使執行時期發生類別載入錯誤。

為了避免這類不當情況:

  1. 編譯器會將參照禁止的套件標示為錯誤。
  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.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 建置路徑內容