我已经成功地从代码中启动了 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
.