2010-04-08 34 views
6

我從來沒有使用過插件片段。我認爲通過在片段中創建一個新的類並導出包含它的包到片段的清單中,我可以從另一個插件訪問那個已經依賴主機插件的插件。但是,我似乎無法完成這項工作。除了主機插件之外,任何插件都可以看到片段的內容嗎?如果是這樣,有什麼特別的我必須做,以允許這個?在主機插件外部是否可見碎片的內容?

回答

8

問題不在於,片段的內容對另一個插件不可見:它們是 - 只是嘗試加載例如一個來自類路徑的屬性文件,如果該屬性文件是由該片段提供的,它仍然有效。

但是你沒有的是關於片段內容的編譯時信息。這是一個片段的原則:你不能依賴它。你不知道,如果有人安裝了碎片。

這不僅僅是「除主機插件之外的任何插件」所具有的問題。這是一個問題,即使是主機插件本身。它不知道在編譯時片段的存在。

您也無法可靠地使用片段來覆蓋主機插件類的部分:FAQ Can fragments be used to patch a plug-in?,如果這是您想要執行的操作。該頁面還介紹瞭如何完成。

希望這會有所幫助。

+0

非常感謝。這一切對我來說都非常有意義,因爲它已經被拼寫出來了 - 我應該已經意識到即使主機插件在編譯時也不能使用關於它的片段的任何信息。我原本對片段很好奇,因爲我想在其中包含測試代碼。在片段之外無法訪問測試代碼實際上是一個很好的好處。 – 2010-04-15 05:29:22