2009-05-19 23 views
11

अपने आवेदन काम करने के लिए कई जार की जरूरत करने के लिए एकाधिक जार विलय। चूंकि यह एक डेस्कटॉप एप्लीकेशन है, इसलिए मैं उपयोगकर्ता को स्थापित करने के लिए जिम्मेदार नहीं ठहरा सकता। तो अपने निर्माण लिपि में मैं अपने निर्माण निर्देशिका के जार में सामग्री अनज़िप, प्रकट फ़ाइलों को हटाने के अपने सॉफ़्टवेयर संकलन और इसे फिर से जार। सबकुछ काम करता है क्योंकि मेरा प्रश्न यह है कि इस प्रक्रिया के लिए कोई दीर्घकालिक साइड इफेक्ट्स है?एक एकल जार

उत्तर

12

अतीत में, वहाँ अजीब सामग्री (; एक Windows फाइल सिस्टम में decompressing के बाद, उन दो संकुल विलय हो जाएगा जो com.ibm और com.IBM शामिल डीबी 2 ड्राइवर की तरह) के साथ जार थे।

एकमात्र मुद्दा जिसे आपको जागरूक करने की आवश्यकता है, मेटा-आईएनएफ में हस्ताक्षरित जार और अन्य फाइलें हैं जिनके पास एकाधिक स्रोत JARs में समान नाम हो सकता है।

एक इन सभी मुद्दों के लिए सरल समाधान One-JAR उपयोग करने के लिए है। यह कई जारों को बिना किसी अनपॅक किए बिना लपेटने की अनुमति देता है। और यह जवाब पढ़ें: Easiest way to merge a release into one JAR file

1

जार के कुछ प्रवेश किया हुआ है आप खोल/यह repacking द्वारा हस्ताक्षर खो देते हैं।

0

खैर आप अपने तीसरे पक्ष के जार की MANIFEST दूर फेंक रहे हैं ताकि आप समस्याओं का कारण बन सकता है। उदाहरण के लिए आप "मुहरबंद" विशेषता को फेंक कर सुरक्षा मुद्दों का कारण बन सकते हैं।

क्यों नहीं बस एक साधारण संस्थापक और एक स्क्रिप्ट आपके आवेदन जो CLASSPATH सही ढंग से सेट शुरू करने के लिए बनाने के?

1

आप अंत उपयोगकर्ता कई जार निर्भरता आप Launch4j या Jsmooth (मैं Launch4j पसंद करते हैं) को देखने के लिए चाहते हो सकता है के साथ एक कार्यक्रम शुरू करने के लिए एक नहीं उपद्रव रास्ता चाहते हैं। दोनों ऐसे प्रोग्राम हैं जो निष्पादन योग्य बनाते हैं जो जार (ओं) और जेआरई को एक साथ लपेटते हैं ताकि अंतिम उपयोगकर्ता को यह कोई अन्य निष्पादन योग्य दिखाई दे।

2

एक और शानदार विकल्प ProGuard है, जो भी कोड को संकुचित और/या obfuscate भी कर सकता है।

1

अपनी प्राथमिक लक्ष्य मंच विंडोज डेस्कटॉप है, तो आप भी अपने आवेदन के जार से एक विंडोज देशी exe पैदा करने पर विचार कर सकते

0

एक-जार काम करेगा, और एक नया रिलीज है (0.97) जो स्प्रिंग और गुइस जैसे ढांचे का समर्थन करता है, जो उपयोगकर्ता अब वन-जेएआर अभिलेखागार में पैक कर रहे हैं। http://one-jar.sourceforge.net

सम्मेलन Hechler भी ग्रहण निर्यात विज़ार्ड के साथ ग्रहण के अंदर कुछ महान काम किया है: हम FatJar/एक-जार है जहाँ से ग्रहण काम बड़ा हुआ पर एक साथ काम किया है, और मैं सिफारिश कर सकते हैं कि एक दृष्टिकोण के रूप में, हालांकि मैं नहीं पता है कि यह ढांचे को कितनी अच्छी तरह से संभालता है।

4

एक सरल समाधान (आईएमओ) Maven's assembly plugin का उपयोग कर रहा है, जिसे previous Q&A में किसी अन्य प्रश्न के उत्तर में से एक में वर्णित किया गया है। यह प्रदान किया जाता है कि आप एक निर्माण उपकरण के रूप में मेवेन (जो अपने स्वयं के अधिकार से एक अनुशंसित उपकरण है) का उपयोग कर रहे हैं।