我正在学习使用intelliJ IDEA开发OSGi应用程序,我选择了Apache's felix
Apache的felix作为运行时,我遇到的问题如下:
the screenshot is here
我已经开发了模块示例1,2和2b,并且2b的包结构与2相同,但是服务接口位于模块2中,模块2b仅用于交替服务,但我不能成功地做到了,felix告诉我模块2b找不到self.gale.services.DictionaryService
,我不知道如何使模块2b可以找到模块2中确切包中定义的服务。
模块2b中Activator的 start 方法:
public void start(BundleContext context)
{
Hashtable<String, String> props = new Hashtable<>();
props.put("Language", "French");
context.registerService(
DictionaryService.class.getName(), new DictionaryServiceImpl(), props);
}
模块2b的清单属性 Import-Package:org.osgi.framework,self.gale.services
我的意思是包self.gale.services
位于模块2中,而不是2b,但似乎无法找到该包。
答案 0 :(得分:2)
您还需要提供&#34; self.gale.services&#34;暴露在您的捆绑包的出口包装中&#34; 2&#34; MANIFEST文件并确保&#34; self.gale.services&#34;的版本在两个MANIFEST文件中相互对应。