2016-03-15 47 views
2

的Eclipse的使用LazyStart頭用於指定如果束應的第一類或資源之前開始從該束的Eclipse RCP:束激活時資源請求

摘自訪問官方Eclipse documentation
從這句話可以推斷,如果一個人指定Eclipse-LazyStart(或Equinox 3.4+中的Bundle-ActivationPolicy: lazy),該包將在第一類或資源請求時被激活。

本來我的意思是問怎麼一個可以添加一個資源文件來激活例外列表,根據例外列表中只包含類包的文檔:
Bundle-ActivationPolicy: lazy; exclude:="org.eclipse.foo1, org.eclipse.foo2"

但後來我跑了幾個測試,並發現資源請求中沒有激活一個包 - 只有類請求激活一個包。我能夠訪問我的資源文件並閱讀其內容,而不觸發捆綁Activator.start。

所以,問題是:

  • 是否正在根據資源請求激活的包嗎?如果不是這樣,那麼文檔似乎是誤導性的。
  • 如果它被激活,非java文件如何被添加到exclude/include列表中?爲什麼Activator.start沒有被觸發?

回答

2

Bundle-ActivationPolicy實際OSGi規範說:

默認情況下,從包加載的任何類都可以觸發懶 激活,但是,資源負荷不能觸發激活。 延遲激活策略可以使用以下指令定義哪些類導致激活:

•include - 從任何這些包加載類時必須觸發激活 的包名列表。軟件包中默認全部爲 包名稱。

•exclude - 當從這些軟件包中加載類 時,必須禁止激活軟件包的軟件包列表 。默認值是沒有包名稱。

(4.4.6.2節OSGi的核心發佈2014年6月6日)

所以這是說資源永遠不會觸發激活。