Eclipse RCP:根据资源请求激活捆绑包

Eclipse RCP:根据资源请求激活捆绑包,eclipse,eclipse-rcp,rcp,osgi-bundle,lazy-initialization,Eclipse,Eclipse Rcp,Rcp,Osgi Bundle,Lazy Initialization,EclipseLazyStart头用于指定是否应在从捆绑包访问第一个类或资源之前启动捆绑包 摘自官方月食。 从这句话可以推断,如果指定了Eclipse LazyStart(或Bundle ActivationPolicy:lazy,在Equinox 3.4+)中,Bundle将在第一类或资源请求时被激活 最初我想问的是如何将资源文件添加到激活异常列表中,因为根据文档,异常列表仅由类包组成: Bundle ActivationPolicy:lazy;排除:=“org.eclipse.foo1,or

EclipseLazyStart头用于指定是否应在从捆绑包访问第一个类或资源之前启动捆绑包

摘自官方月食。
从这句话可以推断,如果指定了
Eclipse LazyStart
(或
Bundle ActivationPolicy:lazy
,在Equinox 3.4+)中,Bundle将在第一类或资源请求时被激活

最初我想问的是如何将资源文件添加到激活异常列表中,因为根据文档,异常列表仅由类包组成:
Bundle ActivationPolicy:lazy;排除:=“org.eclipse.foo1,org.eclipse.foo2”

但后来我运行了一些测试,发现一个捆绑包并没有在资源请求时被激活——只有类请求才会激活捆绑包。我能够访问我的资源文件并读取其内容,而无需触发bundle Activator.start

因此,问题是:

  • 是否根据资源请求激活捆绑包?如果不是的话,说明文件有误导性
  • 如果正在激活,如何将非java文件添加到排除/包含列表?为什么没有触发Activator.start

包激活策略的实际OSGi规范规定:

默认情况下,从bundle加载的任何类都可以触发延迟 但是,激活时,资源加载不能触发激活。 惰性激活策略可以使用以下指令定义导致激活的类:

•包括-必须触发激活的程序包名称列表 从这些包中加载类时。默认值为“全部” 包中存在的包名称

•排除-包装清单 当类 从这些包中的任何一个加载。默认值是没有包名称

(第4.4.6.2节OSGi核心版本2014年6月6日)

也就是说,资源永远不会触发激活