2016-03-15 27 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日)

所以这是说资源永远不会触发激活。