2012-03-08 8 views
57

मैं लाइब्रेरी को निकालने योग्य और जार फ़ाइल निर्माण के साथ ग्रहण से एक जार फ़ाइल में पैकेजिंग के बीच अंतर जानना चाहता हूं।लाइब्रेरी को एक जार फ़ाइल में निकालने और पैकेजिंग के बीच अंतर

यदि मेरा प्रोग्राम (रननेबल जार) अन्य कक्षाओं का उपयोग करता है जिसके लिए इन बाहरी पुस्तकालयों (जार) की आवश्यकता होती है, तो मुझे क्या चुनना चाहिए?

+0

संभावित डुप्लिकेट [वें क्या है रननेबल जार लाइब्रेरी हैंडलिंग विकल्पों के बीच ई अंतर?] (http://stackoverflow.com/questions/8302894/what-is-the-difference-between-runnable-jar-library-handling-options) –

उत्तर

38

यदि आप जार को अपनी जेनरेट की गई जार फ़ाइल में रखना चाहते हैं, तो आप पैकेजिंग विधि का उपयोग कर सकते हैं। उदाहरण के लिए यदि आप अपाचे लाइब्रेरी या कुछ अन्य तृतीय पक्ष जार का उपयोग कर रहे हैं, तो आप इन जार को अपने जेनरेट किए गए जार में संरक्षित रखना चाहेंगे। इस मामले में, पैकेजिंग का उपयोग करें। "पैकेजिंग आवश्यक जर्नल फाइल में पुस्तकालयों की आवश्यकता है" विकल्प आपकी जेनरेट की गई फ़ाइल में org.eclipse.jdt.internal.jarinjarloader पैकेज की कक्षाएं रखता है और यह पैकेज जेनरेट की गई जार फ़ाइल की मूल निर्देशिका के नीचे है। ग्रहण के जार लोडर वर्गों के कारण यह विकल्प आकार के मामले में एक बड़ी जार फ़ाइल भी बनाता है।

आवश्यक पुस्तकालयों को निकालने के परिणामस्वरूप पैकेज नामकरण सम्मेलन का पालन करके तृतीय पक्ष पुस्तकालयों की कक्षाओं को आपकी जार फ़ाइल में डाल दिया जाएगा। यदि आप अपनी जार सामग्री खोलते हैं तो आप org.apache.. पैकेज के तहत कुछ कक्षाएं देख सकते हैं।

मुख्य वर्ग प्रवेश जब आप पैकेज आवश्यक पुस्तकालयों:

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

मुख्य वर्ग प्रवेश जब आप निकालने आवश्यक पुस्तकालयों

मुख्य वर्ग प्रविष्टियों इन जार फ़ाइलों के MANIFEST.MF फ़ाइलों के बीच अलग हैं :

Main-Class: YourMainClass 
+5

लाभ या उपयोग क्या है तो पैकिंग के? पैकेजिंग द्वारा – ctekk

+1

, आप अपने जेनरेट जार में "JarRsrcLoader" कक्षा के माध्यम से जार फ़ाइलों को लोड कर सकते हैं। यदि आप तीसरे पक्ष के जार का उपयोग कर रहे हैं और इन जारों के साथ अपने आवेदन कोड को गठबंधन करना चाहते हैं, तो आप इस तरह ग्रहण की पैकेजिंग उपयोगिता का उपयोग कर सकते हैं। मेरा संपादित उत्तर देखें। – Juvanis

+10

प्रदर्शन समस्याओं से सावधान रहें। मैं कल तक jarinjarloader का उपयोग कर अपने आवेदन जार के अंदर अपने पुस्तकालय जार पैकेज करने के लिए इस्तेमाल किया। फिर, जेआरई को संस्करण 8 अपडेट 31 (विंडोज़ पर) अपडेट करने के बाद, मेरा आवेदन निष्पादित करना काफी धीमा हो गया (10x तक)। जब मैंने लाइब्रेरी जार की सामग्री को अपने जार में निकालने का विकल्प चुना तो समस्या हल हो गई। – Giuseppe

संबंधित मुद्दे