6

两者都将解决 osgi 中的包依赖关系它们之间有什么区别

4

2 回答 2

17

Bootdelegation 是一种需要的 hack,因为 VM 中的一些代码假定应用程序类加载器对 com.sun.* 类具有可见性。在 OSGi 中,显然不是这样。引导委托是指定框架可以在引导类路径上查找哪些包的参数。由于这不是模块化的,所以不要这样做。它对框架来说是全局的。

DynamicImport-Package 类似,但仅适用于定义它的包并且仅适用于导出的包。如果在正常的捆绑内容或 Import-Package 中找不到包,则 DynamicImport-Package 指定允许在导出的包集中搜索的包的模式。这个想法类似于类路径,你不知道你会得到什么版本。一旦找到一个包,它就会永远使用。但是,如果没有找到每个访问将继续查找。即,您可以在事后安装包,而无需重新启动包。

于 2013-02-06T13:41:09.890 回答
2

每次需要包中的类时,都会解析通过 DynamicImport-Package 导入的包。因此,如果由于解析过程导致包不可用,它不会失败。通过这种方式,可能会在运行时抛出 ClassNotFoundExceptions。(将此与可选导入进行比较)

BootDelegation 类将从 bootdelegation 类加载器加载,该类加载器将 OSGi 框架加载到 JVM http://wiki.osgi.org/wiki/Boot_Delegation http://www2.sys-con.com/itsg /virtualcd/java/archives/0808/chaudhri/index.html http://de.slideshare.net/honnix/osgi-class-loading

于 2013-02-06T12:56:25.120 回答