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