2015-11-02 6 views
5

में अपने MANIFEST.MF को पढ़ना मैं जावा सर्वलेट में अपना स्वयं का MANIFEST.MF संसाधन पढ़ने की कोशिश कर रहा हूं। मेरी स्थिति: मेरे पास एक ईएआर के अंदर एक युद्ध (मैनिफेस्ट के साथ मैं पढ़ना चाहता हूं) है। ईएआर में कई अन्य युद्ध और जार हैं। एक वर्ग पथ वास्तव में लंबा है।जावा सर्वलेट

मैंने स्टैक ओवरव्लो सहित वेब में कई तरीकों की कोशिश की।

मैं

this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF"); 

का उपयोग करके सभी MANIFEST.MF फ़ाइलों को पढ़ने और उन के माध्यम से पुनरावृति कर सकते हैं। हालांकि, मुझे नहीं पता कि मेरा कौन सा है - मुझे बिल्डिंग पाइप द्वारा उत्पन्न होने के बाद से कार्यान्वयन-शीर्षक भी नहीं पता है। (मैं निर्माण पाइप के ज्ञान के साथ अनुमान लगा सकते हैं, इसलिए मुझे पता है कि सही प्रकट होती है। हालांकि, मैं एक उत्पादन कोड में अनुमान नहीं कर सकते हैं।)

बेशक

,

this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF"); 

एक पूरी तरह से गलत प्रकट रिटर्न एक वर्ग पथ पर कुछ अन्य जार से।

मैं भी

this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF"); 

की कोशिश की, लेकिन यह एक अशक्त देता है।

वर्तमान में चल रहे सर्वलेट वाले WAR से संबंधित MANIFEST.MF फ़ाइल का उपयोग कैसे करें?

+3

आप कौन सी मेनिफेस्ट विशेषताएँ पढ़ने की योजना बना रहे हैं? उनमें से कई मौजूदा जावा एसई विधियों के साथ उपलब्ध हैं। – VGR

+1

वीजीआर +1, उदाहरण के लिए संस्करण प्राप्त करना: स्ट्रिंग संस्करण = getClass()। GetPackage()। GetImplementationVersion(); – Rustam

+1

ऊपर टिप्पणियां WAR के अपने प्रकट के लिए अपरिहार्य हैं और इसलिए गलत हैं। – BalusC

उत्तर

3

मैं भी

this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF"); 

की कोशिश की, लेकिन यह एक अशक्त देता है।

उस पथ आदेश एक पूर्ण युद्ध संसाधन पथ का प्रतिनिधित्व करने में / से प्रारंभ होना चाहिए।

this.getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"); 

ClassLoader#getResourceXxx() का उपयोग करना मतलब नहीं है के रूप में युद्ध के अपने मैनिफ़ेस्ट फ़ाइल classpath में स्थित नहीं है। यह वेब्रोट में स्थित है, /WEB-INF और सभी के बगल में। इसलिए, ServletContext#getResourceXxx() एकमात्र तरीका है।

+0

यह सहायक था। मैं समझ में नहीं आता कि यह कैसे संभव है कि द्वारा सभी प्रकटताओं को पढ़ना .getClass()। GetClassLoader()। GetResources ("मेटा-आईएनएफ/MANIFEST.MF"); भी असफल नहीं हुआ। – user1608790

+1

आपका स्वागत है। वे क्लासपाथ से वेबकंटेंट से नहीं आते हैं। अन्य नियम लागू होते हैं। ए.ओ. भी देखें http://stackoverflow.com/questions/2161054/where-to-place-and-how-to-read-properties-files-in-a-jsp-servlet-web-application/ – BalusC

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