मैंने कई ट्यूटोरियल और एप्लिकेशन देखे हैं जो अपने जार को एक बिल्ड पथ के अंदर रखते हैं जबकि अन्य इसे अपने वेब-इंफ/lib फ़ोल्डर में डालते हैं, क्या कोई महत्वपूर्ण अंतर है ? दोनों के पेशेवरों और विपक्ष क्या हैं? Libs फ़ोल्डर के अंदर एक निश्चित जार डालने और निर्माण पथ में जार डालने के लिए मेरे लिए एक संकेतक क्या है?जावा कॉन्फ़िगरिंग बिल्ड पथ या वेब-आईएनएफ/lib फ़ोल्डर
उत्तर
वेब-आईएनएफ फ़ोल्डर वाला एक एप्लिकेशन एक वेब अनुप्रयोग है। मतलब यह एक WAR फ़ाइल के रूप में पैक किया जाएगा और एक सर्वर पर तैनात किया जाएगा।
यदि आप ग्रहण की तरह आईडीई का उपयोग कर रहे हैं, और आप परियोजना को एक WAR फ़ाइल के रूप में निर्यात करते हैं, तो यह स्वचालित रूप से lib फ़ोल्डर के तहत जार ले जाएगा और उन्हें WAR के साथ पैक करेगा और इससे उन्हें चल रहे एप्लिकेशन के लिए उपलब्ध कराया जाएगा सर्वर (वेब-आईएनएफ/lib के तहत जार एप्लिकेशन क्लासपाथ में शामिल हैं)।
यदि आप उन्हें कहीं और डालते हैं और उन्हें बिल्ड पथ में शामिल करते हैं, तो जब आप प्रोजेक्ट को निर्यात करते हैं तो आपको यह घोषित करना होगा कि आप निर्माण पथ में जार भी शामिल करना चाहते हैं।
असल में, कोई बड़ा अंतर नहीं है, लेकिन यदि आपको पता है कि आपको रनटाइम में इस जार की आवश्यकता है (यानी सर्वर पर एप्लिकेशन को तैनात करने के बाद), तो इसे वेब-आईएनएफ/lib फ़ोल्डर के तहत रखना बेहतर है।
का निर्माण करने का क्या मतलब है? आपके द्वारा उपयोग किए जाने वाले अधिकांश JAR भवन (संकलन) के दौरान उपलब्ध होने की आवश्यकता है क्योंकि आपका कोड उन पर निर्भर करता है - अन्यथा यह संकलित नहीं होगा।
वास्तविक प्रश्न WEB-INF/lib
बनाम JARs को आपके कंटेनर /lib
निर्देशिका बनाम रखने के बीच है। आम तौर पर आपको हमेशा अपने जेएआर को WEB-INF/lib
में किसी एप्लिकेशन के अंदर रखना चाहिए। उन्हें विश्व स्तर पर रखने के लिए कई परिणाम है:
एकमात्र अब सभी वेब एप्लिकेशन (एक वर्ग लोडर) यदि एक से अधिक तैनात
यह स्मृति रिसाव शुरू करने की है, तो एक पुस्तकालय में से किसी के लिए एक संदर्भ रखती आसान है करने के लिए वैश्विक हैं अपनी कक्षाओं (ऊपर देखें)
आप एक ही वर्गों नकल नहीं है (प्रत्येक वेब अनुप्रयोग के रूप में प्रत्येक वर्ग लोडर
क्या आप इसके लिए कुछ प्रकार के दस्तावेज प्रदान कर सकते हैं? – Jewels