मैं एक प्रोजेक्ट पर काम कर रहा हूं, यह एकीकरण परियोजना है, हम अपाचे कैमल और अपाचे कराफ का उपयोग कर रहे हैं। परियोजना में, मैं Jira REST Java client library.लाइब्रेरी को OSGIfy कैसे करें
तो मैं पढ़ा है काफी विभिन्न लेख और कैसे OSGi बंडल करने के लिए गैर OSGi पुस्तकालय रैप करने के लिए के बारे में धागे की बहुत उपयोग करने की आवश्यकता है, लेकिन मैं वास्तव में यकीन है कि अगर मुझे मिल नहीं कर रहा हूँ यह सही।
इसलिए, मैंने आवश्यक पुस्तकालय की निर्भरता के साथ एक पीओएम फ़ाइल बनाई है। एक पैकेज बनाया और इसे कराफ को तैनात करने की कोशिश की, बेशक, कराफ ने लापता पैकेजों की शिकायत की।
तो, मुझे संबंधित मैवेन निर्भरता मिली है, इसे जोड़ा गया है, पैकेज <Import-Package>
में और <Embed-Dependency>
पर निर्भरता में चला गया है।
एक और दौर, तैनाती, निर्भरता, जोड़, ... और फिर, और फिर, जब तक कराफ बंडल के साथ ठीक नहीं है।
क्या यह वाकई सही है? मुझे लगता है कि मुझे काफी पागल लग रहा है, इसलिए मुझे लगता है कि मुझे इसे सामान्य रूप से नहीं मिला :)
अंत में, पैकेज मेरे काम कंप्यूटर पर स्थिर हो गया, मैंने इसे जल्दी से चेक किया और घर चला गया, वहां मैंने जारी रखा लेकिन, अजीब, मेरे व्यक्तिगत कंप्यूटर पर संकलित एक ही पीओएम/पैकेज काम नहीं कर रहा है, फिर से लापता पैकेज के बारे में शिकायत कर रहा है, लेकिन इस बार, यह पैकेज निश्चित रूप से पीओएम फाइल में है और निश्चित रूप से यह पैकेज में एम्बेड किया गया है, मैं कर सकता हूं इसे वहाँ देखें।
यह अनुपलब्ध पैकेज इस समय org.apache.commons.codec है।
org.osgi.framework.BundleException: Unresolved constraint in bundle jiraclient.bundle [134]: Unable to resolve 134.0: missing requirement [134.0] osgi.wiring.package; (osgi.wiring.package=org.apache.commons.codec)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)[org.apache.felix.framework-4.0.3.jar:]
at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)[org.apache.felix.framework-4.0.3.jar:]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)[org.apache.felix.framework-4.0.3.jar:]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1247)[6:org.apache.felix.fileinstall:3.2.6]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1219)[6:org.apache.felix.fileinstall:3.2.6]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1208)[6:org.apache.felix.fileinstall:3.2.6]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:503)[6:org.apache.felix.fileinstall:3.2.6]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.2.6]
तो, अब मैं क्या गलत :(
सुंदर कृपया, दोस्तों, मेरी मदद करो। धन्यवाद!
पोम फ़ाइल लंबा है पूरी तरह से उलझन में हूँ, है, इसलिए मुझे लगता है कि कड़ी है बेहतर: http://pastebin.com/j5cmWveG
और क्या आपने अपने बंडल को स्थापित करने से पहले करफ में कॉमन्स-कोडेक स्थापित किया है? अपवाद आपको बताता है कि इसे एक पैकेज आयात करने की आवश्यकता है जिसे वह नहीं मिल सकता है। हां IMHO फ़ेलिक्स से अपवादों को उपयोगकर्ता को समाप्त करने के लिए बेहतर समझाया जाना चाहिए, इसका क्या अर्थ है। –
हैलो क्लॉस, आपसे मिलकर अच्छा लगा (बीटीडब्ल्यू, "वर्मल इन एक्शन" पुस्तक के लिए धन्यवाद :))। इसका क्या अर्थ है, "कॉमन्स-कोडेक स्थापित"? ऐसा लगता है कि मेरे करफ इंस्टेस में, कम से कम बंडल स्थापित और सक्रिय है: karaf @ root> बंडल: सूची | grep कोडेक [246] [स्थापित] [] [] [80] एमवीएन: कॉमन्स-कोडेक/कॉमन्स-कोडेक/1.2 क्या यह पर्याप्त है? क्या यह बंडल आवश्यक कक्षाओं का पर्दाफाश करता है? मुझे लगता है कि बंडल निर्यात को कैसे पता चलाना है, लेकिन मुझे अभी नहीं पता :( बीटीडब्ल्यू, मेरे पास लाइब्रेरी बंडल में एम्बेडेड कॉमन्स-कोडेक पैकेज है, यह क्यों काम नहीं करता है? – stibi
शायद बंडल को "org.apache.commons.codec" को स्पष्ट रूप से निर्यात करना है, इसलिए एम्बेडेड जिरा आराम पुस्तकालय उसी बंडल में इसका उपयोग कर सकता है? क्या यह समझ में आता है? – stibi