Eclipse-LazyStart标头用于指定是否应在从该捆绑包访问第一个类或资源之前启动捆绑包
取自官方的Eclipse documentation
可以从这句话中推断,如果在Equinox 3.4+中指定Eclipse-LazyStart
(或Bundle-ActivationPolicy: lazy
),则会在第一类或资源请求时激活该捆绑。
最初我想询问如何将资源文件添加到激活例外列表中,因为根据文档,例外列表仅包含类包:
Bundle-ActivationPolicy: lazy; exclude:="org.eclipse.foo1, org.eclipse.foo2"
但后来我运行了一些测试,发现在资源请求时没有激活一个bundle - 只有类请求激活一个bundle。我能够访问我的资源文件并读取其内容而不触发捆绑Activator.start。
所以问题是:
答案 0 :(得分:2)
Bundle-ActivationPolicy
的实际OSGi规范说:
默认情况下,从bundle加载的任何类都可以触发延迟 但是,激活资源负载不得触发激活。 延迟激活策略可以使用以下指令定义哪些类导致激活:
•include - 必须触发激活的软件包名称列表 从任何这些包加载类时。默认为全部 包中存在的包名称。
•exclude - 包列表 在类中不得触发激活bundle的名称 从任何这些包加载。默认值是没有包名。
(第4.4.6.2节OSGi核心版本2014年6月6日)
这就是说资源永远不会触发激活。