我已经成功地从代码中启动了 Apache Felix 并注册了一个自己的 Bundle。
需要以下 OSGI 项目之间的关系:
[OsgiInterface]-- 提供接口。
[OsgiModuleA]-- (bundle) 提供这些接口的实现。
知道[OsgiInterface]
[OsgiUsage]-- 使用一个或多个捆绑包。
知道[OsgiInterface]并且[OsgiModuleA]
现在我在注册实现接口的服务时遇到问题。我猜我在manifest.mf文件中的条目是错误的。
附加信息
如果有人可以查看我上一个问题中的代码,那就太好了
让我参考一下这个问题:
我试图创建第三个项目OsgiInterfacesSomeInterface ,它在包中提供了一个接口interfaces。OsgiModuleA和OsgiUsage都知道这个项目。
OsgiModuleA: manifest.mf现在interfaces为 entry增加了一个值Import-Package:。此外,还有一个SomeInterface提供给激活器的实例。
当捆绑包启动时,NoClassDefFoundError会发生:接口SomeInterface未知。
编辑:
现在,错误已修复,我可以说,最重要的部分是:
map.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
"my.interfaces; version=1.0.0");
没有这个,我得到了ClassCastException.