Im试图访问java项目中的osgi ds。我发现在互联网上像这样的例子:访问java项目中的osgi声明式服务
BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
ServiceReference serviceReference = context.getServiceReference(MyClass.class.getName());
MyClass blah = (MyClass) new ServiceTracker(context, serviceReference, null).getService();
blah.doStuff();
这里的问题是,如果我在一个Java类中运行这个“背景”变量为空。我想这可能是因为它不在一个osgi包中。
我试图chaning的东西,如果我改变它像这样它的工作原理:
BundleContext context = FrameworkUtil.getBundle(Myclass.class).getBundleContext();
但说实话,我真的不明白这个包上下文。 它究竟是什么,它可以与参考类是相同的类吗?
手册声明以下内容: 上下文 - 跟踪完成的BundleContext。 ......但是,这些让我更清楚。
谢谢!
感谢您的回答。 MyClass.class是正确的,只是在复制时出错。我会纠正我的问题。 但问题的真正意义在于理解上下文变量是什么?它可以是同一类的背景,即时获得参考? – user1985273
BundleContext是访问OSGi API的句柄。 OSGi框架为每个包提供了自己的上下文对象,该包在任何时候调用OSGi时都应该使用它。这样,OSGi总是知道哪个软件包正在调用它。 –
那么,如果把手与参考相同,那么可以吗? – user1985273