0

在听说过 OSGi 片段后,我想知道:

我可以使用片段来注入补丁,即替换现有签名包中的现有类吗?

是否有文档如何做到这一点?

4

2 回答 2

2

我没有玩过签名包,但它们是一种让片段覆盖主机包中的类的方法。但是,您需要提前做好计划。

在您的 Host Bundle 中定义一个 Bundle-Classpath 如下:

捆绑类路径:jar-not-in-host.jar;。

该 jar 文件不应存在于主机中。然后您的片段可以包含一个名为 jar-not-in-host.jar 的 jar。当附加片段时,jar-not-in-host.jar 中的类将在主机包根目录中的类之前加载。

我知道不是很好,但它有效。

于 2010-12-24T11:11:51.890 回答
1

答案是否定的。

OSGi 片段没有自己的类加载器,它们被视为主机的一部分。他们不能注入新代码来替换现有的类。片段的常见用法是为不同的主机提供不同的实现。另一个需要其功能的包(由主机包导出)将不依赖于具体实现。

Bundle 已经是 OSGi 的原子概念,如果你想修补一些东西,你应该提供它的更新版本。

于 2010-12-24T03:59:46.830 回答