JAR फ़ाइल के रूप में निर्यात करने और Runnable JAR फ़ाइल के रूप में निर्यात करने के बीच ग्रहण में क्या अंतर है? क्या वे दोनों भाग नहीं रहे हैं? प्रत्येक के पक्ष / विपक्ष क्या हैं?
JAR फ़ाइल के रूप में निर्यात करने और Runnable JAR फ़ाइल के रूप में निर्यात करने के बीच ग्रहण में क्या अंतर है? क्या वे दोनों भाग नहीं रहे हैं? प्रत्येक के पक्ष / विपक्ष क्या हैं?
जवाबों:
रन करने योग्य जार में एक MANIFEST.MF फ़ाइल होती है, जो जार को चलाने पर मुख्य वर्ग को निष्पादित करती है।
गैर-रन करने योग्य जार केवल कक्षाओं के पुस्तकालय हैं, जिन्हें क्लासपाथ में जोड़ा जा सकता है ताकि कोड का पुन: उपयोग किया जाए (इसमें प्रकट फ़ाइल भी शामिल है, लेकिन वहां कोई मुख्य वर्ग नहीं है)
एक रन करने योग्य जार एक जार फ़ाइल है जिसमें एक एम्बेडेड मैनिफ़ेस्ट फ़ाइल होती है जिसमें "मेन-क्लास:" घोषणा शामिल होती है। "मेन-क्लास" को परिभाषित किया जाना चाहिए ताकि जावा रनटाइम जानता है कि जार "रन" होने पर किस क्लास को कॉल करना है। यदि एक जार में "मेन-क्लास:" के साथ एक प्रकटन शामिल नहीं है, तो इसे "रन करने योग्य जार" नहीं माना जाता है - यह सिर्फ जावा कोड का एक पुस्तकालय है।
मुझे लगता है कि यह अंतर है कि कैसे ग्रहण जार निर्यात करता है, लेकिन 100% सुनिश्चित नहीं है।
अधिक जानकारी के लिए यह लिंक देखें: http://www.skylit.com/javamethods/faqs/createjar.html
मानक JAR फ़ाइल के साथ, आपको जार को चलाते समय कमांड लाइन पर मुख्य विधि के साथ वर्ग को निर्दिष्ट करना होगा। एक रन करने योग्य JAR के साथ, एक प्रकट फ़ाइल होती है जो उस जानकारी को धारण करेगी जिससे आप केवल टाइप कर सकते हैं java -jar myRunnable.jar
, या बस इसे डबल क्लिक कर सकते हैं।
मेरे मामले में, मैं एक जार के रूप में निर्यात करता था जब मेरे पास सभी मुख्य वर्ग और सभी पुस्तकालयों पथ निर्देशिका में थे। यदि कई एप्लिकेशन समान लाइब्रेरी का उपयोग कर रहे हैं, तो प्रत्येक जार के लिए साझा लाइब्रेरी को निर्यात करना अनावश्यक है। यह रनिंग जार को तेज बनाता है। लेकिन, कई बार अलग-अलग सर्वर वर्ग-पथ में कॉन्फ़िगरेशन समस्या के कारण लाइब्रेरी तक पहुंच नहीं हो पाती है और उस स्थिति में यह रन करने योग्य जार को निर्यात करने के लिए समझ में आता है जो फ़ाइल को निष्पादित करने के लिए धीमा और बड़ा बनाता है।