我正在学习使用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中确切程序包中定义的服务。

I guess the problem is here


  模块2b中激活器的启动方法:


public void start(BundleContext context)
{
    Hashtable<String, String> props = new Hashtable<>();
    props.put("Language", "French");
    context.registerService(
            DictionaryService.class.getName(), new DictionaryServiceImpl(), props);
}



  模块2b导入包的清单属性:org.osgi.framework,self.gale.services


我的意思是包self.gale.services位于模块2中,而不是此2b中,但似乎找不到该包。

最佳答案

您还需要提供在软件包“ 2” MANIFEST文件的导出包中公开的“ self.gale.services”,并确保两个MANIFEST文件中的“ self.gale.services”版本彼此对应。

关于java - 使用智能IDEA开发OSGi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39406555/

10-10 21:59