मैंने एक छोटा एपीआई बंडल और एक सेवा बंडल बनाया है जो एपीआई का उपयोग करना चाहिए।ओजीआई बंडल शुरू नहीं कर सकता क्योंकि आयात को हल नहीं किया जा सकता
<dependency>
<groupId>at.foobar.osgi.api</groupId>
<artifactId>foobarapi</artifactId>
<version>1.0</version>
</dependency>
मैं बंडलों बनाने के लिए Maven-बंडल प्लगइन का उपयोग कर रहा है, और क्योंकि:
मेरी Maven pom.xml फ़ाइल में, मैं इस तरह सही संस्करण में अपने एपीआई बंडल के लिए एक निर्भरता जोड़ा उस में मैंने जार फ़ाइल बनाने के लिए mvn clean install
का उपयोग किया था। प्रकट इस (सेवा) की तरह दिखता है:
Manifest-Version: 1.0
Private-Package: at.foobar.osgi.producer
Built-By: foobar
Tool: Bnd-0.0.238
Bundle-Name: foobarproducer
Created-By: Apache Maven Bundle Plugin
Bundle-Version: 1.0
Build-Jdk: 1.6.0_26
Bnd-LastModified: 1332185439257
Bundle-ManifestVersion: 2
Bundle-Activator: at.foobar.osgi.producer.Activator
Import-Package: at.foobar.osgi.api,org.osgi.framework;version="1.4"
Bundle-SymbolicName: at.foobar.osgi.producer.foobarproducer
जो मेरे लिए ठीक हो रहा है। आयात वहां है, इसलिए सबकुछ ठीक होना चाहिए।
अब मैंने विषुव शुरू किया और एपीआई और निर्माता बंडल स्थापित किया। फिर मैंने एपीआई शुरू किया, जो ठीक काम करता था।
org.osgi.framework.BundleException: The bundle "at.foobar.osgi.producer.foobarproducer_1.0.0 [4]" could not be resolved. Reason: Missing Constraint: Import-Package: at.foobar.osgi.api; version="0.0.0"
ऐसा नहीं है कि ढांचे एपीआई नहीं मिल सकता है लगता है, लेकिन इसकी स्थापित किया है और शुरू कर दिया: लेकिन जब मैं निर्माता सेवा शुरू करना चाहते हैं मैं इस त्रुटि मिलती है?
आपको लगता है कि पैकेज की पुष्टि करने के विषुव कंसोल और रन 'संकुल at.foobar.osgi.api' ऊपर निकाल दिया है आपके एपीआई बंडल द्वारा निर्यात किया जाता है? यदि आपको पैकेजों की एक बड़ी स्क्रॉलिंग सूची मिलती है, तो इसका मतलब है कि पैकेज में कोई बंडल निर्यात नहीं है। मैं यह देखने के लिए 'बंडल [एपीआई-बंडल-नाम]' का प्रयास भी करूंगा कि एपीआई बंडल किस पैकेज को निर्यात करता है - और इसकी पुष्टि करें कि यह स्वयं शुरू हो गया है। –
mh मैं एपीआई निर्यात करना भूल गया ... लेकिन मुझे नहीं पता कि मुझे इसे निर्यात करने की आवश्यकता क्यों है? मैंने कोर स्पेक पढ़ा और सोचा कि एपीआई पैकेज को निर्यात नहीं किया जाना चाहिए क्योंकि यह ओजीआई द्वारा हल किया गया है? – reox
पैकेज को या तो आपके बंडल द्वारा निर्यात किया जाना चाहिए या बंडल में शामिल किया जाना चाहिए (यानी सूचीबद्ध निजी निजी पैकेज)। आपने न तो किया है, इसलिए बीएनडी इसे एक आयातित पैकेज के रूप में पहचानता है। शायद निर्यात सही है क्योंकि यह एक एपीआई की तरह लगता है कि अन्य बंडल का उपयोग करना चाह सकता है। –