ApacheFelix:inherit导入包org.osgi.service.cm

ApacheFelix:inherit导入包org.osgi.service.cm,osgi,classnotfoundexception,apache-felix,Osgi,Classnotfoundexception,Apache Felix,我有一个包,其中包含导入包org.osgi.service.cm。在这个包中,只有一个接口ConfigurationInterface,它声明了几个方法,其中一个抛出org.osgi.service.cm.ConfigurationException。这个包只导出它自己的包,比如com.foo.bar.configuration 然后我还有其他API包,它们有一个服务接口ServiceInterface,它扩展了ConfigurationInterface,因此它们导入了包com.foo.bar

我有一个包,其中包含导入包org.osgi.service.cm。在这个包中,只有一个接口ConfigurationInterface,它声明了几个方法,其中一个抛出org.osgi.service.cm.ConfigurationException。这个包只导出它自己的包,比如com.foo.bar.configuration

然后我还有其他API包,它们有一个服务接口ServiceInterface,它扩展了ConfigurationInterface,因此它们导入了包com.foo.bar.configuration。显然,这些api也有实现ServiceInterface的实现捆绑包,因此它们正在导入org.osgi.service.cm,因为每个实现都需要抛出org.osgi.service.cm.ConfigurationException的方法


一切正常,当我将这些服务声明为可选服务时,问题就出现了,因为当它们不可用时,框架会尝试从接口实例化代理,我得到一个java.lang.ClassNotFoundException:org.osgi.service.cm.ConfigurationException。该框架建议将“org.osgi.service.cm”的导入添加到API包中


有没有一种方法可以使此导入从配置包中可用,这样就不必将导入添加到每个API?

因为当它们不可用时,框架会尝试从接口实例化代理…:只是一条建议:不要使用任何具有这种魔力的技术。魔术是半职业程序员的圣杯。虽然它看起来很酷,但它是邪恶的,特别是在OSGi的世界里?Felix或其他什么?您确定没有混淆包导入/导出和服务/组件吗?前两段是关于前者的,而在第三段中,您编写的框架试图从接口实例化一个代理,这听起来像是来自某个组件框架的依赖注入。@ChristianSchneider我在使用Felix。@Balazsoldos我不认为使用任何神奇的技术,我指的是felix框架中为不可用服务实例化空对象的部分。目前,我将org.osgi.service.cm的导入添加到每个api捆绑包中,它可以正常工作