2016-09-09 195 views
0

我学习开发使用IntelliJ IDEA的OSGi应用程序开发OSGi,我选择Apache's felix Apache的菲利克斯作为运行时,我遇到的问题是下面: the screenshot is here使用的IntelliJ IDEA

我已经开发的模块例子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,自我。 gale.services

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

+0

代码,不是截图。 – chrylis

回答

2

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

+0

是的,你是对的。实际上,我已经在bundle 2中导出了'self.gale.services',但是该行之后是**,version =“1.0”**(我不知道我在哪里复制了该文件。-_- ),现在我删除这个,我从felix得到正确答案。无论如何,非常感谢。 –