【发布时间】:2019-12-20 06:37:58
【问题描述】:
你好,晚上好,
我一直在使用 Eclipse IDE 和 Bndtools 插件对 OSGi 进行一些试验。
我制作了一个捆绑包并在捆绑包的一个包中创建了一个组件。
我在该组件中创建了自己的ResolveContext,并确保Resolver 能够解决我的问题。
调用Resolver.resolve(ResolveContext)-方法时,如果找到解决方案,则返回Map<Resource,List<Wire>>。
在我的例子中,我处理了这个问题,只需要安装 1 个资源/捆绑包,但我不太明白我从 Resolver 得到的答案。
我正在取回包含 2 个条目的地图:
1): org.bram.package.MyComponent$2@10c23f49 [org.bram.package.MyComponent$1@792102f3 -> [org.organisation.types.domotics version=0.12.1] ]
2): org.organisation.types.domotics version=0.12.1=[]
请注意,org.bram.package.MyComponent 是我制作的组件,也是使用解析器的地方。
Resources 的命名并不重要,我只是不明白这个答案的含义以及如何采取行动。
要完成此解决方案,我是否应该简单地安装捆绑包org.organisation.types.domotics 版本0.12.1(可以从我的存储库中获得)?
如果需要更多信息,请询问,我会尽力提供尽可能详细的信息。
谢谢
【问题讨论】:
-
直接使用resolver有什么特殊原因吗?通常,您会创建一个 bndrun 文件,在其中指定存储库以及初始需求/捆绑包,并且 bndtools 会根据解析过程计算运行包。
-
嘿克里斯蒂安,我直接使用它有一个特殊的原因。这是深入研究 OSGi 的经验的一部分。当某个事件发生时,必须从组件中调用解析器(因此在运行时)。很好的评论,但它是故意的。
标签: java osgi resolver bnd bndtools