web.xml याद आ रही है और <failOnMissingWebXml> सही पर सेट है


142

विचार करें:

यहां छवि विवरण दर्ज करें

जब मैं ग्रहण में एक सरल मैवेन परियोजना बनाता हूं तो मुझे यह त्रुटि मिल रही है:

web.xml अनुपलब्ध है और <failOnMissingWebXml>सत्य पर सेट है

मैं इस समस्या को कैसे ठीक करुं?


5
आप जोड़ने की जरूरत है maven-war-plugin। यह एक अंतर्निहित प्लगइन जहां कि विन्यास संपत्ति के लिए डिफ़ॉल्ट मान सत्य है। आपको इसे स्पष्ट रूप से घोषित करने और कॉन्फ़िगरेशन संपत्ति को गलत पर सेट करने की आवश्यकता है। अधिक देखें यहाँ । या फिर आप एक खाली web.xml में जोड़ सकते हैं
पॉल Samsotha

जवाबों:


181

आप इस तरह भी यह कर सकते हैं:

  1. प्रोजेक्ट एक्सप्लोरर में डिप्लॉयमेंट डिस्क्रिप्टर पर राइट क्लिक करें
  2. का चयन करें उत्पन्न तैनाती डिस्क्रिप्टर स्टब

यह src / main / webapp में WEB-INF फ़ोल्डर और इसमें एक web.xml उत्पन्न करेगा ।

यहाँ छवि विवरण दर्ज करें


39
मैं कोड के लिए बॉयलरप्लेट जोड़ने, सिर्फ इसलिए कि अपने निर्माण उपकरण त्रुटि देता सिफारिश नहीं होगा।
मार्टिंज बर्गर

1
@MartijnBurger क्या आप हमें उपरोक्त हैक के संभावित नतीजों के बारे में बता सकते हैं और यदि संभव हो तो कुछ अन्य विकल्प भी जोड़ सकते हैं? - मेरे जैसे नौसिखिए प्रोग्रामर की मदद करेंगे। धन्यवाद।
सेंथिलकुमार अललसुंदरम

7
एक विकल्प के लिए नीचे मेरा जवाब देखें। समाधान ऊपर यह है सिर्फ इतना है कि आप हमेशा संभव के रूप में स्वच्छ के रूप में अपने अंतिम उत्पाद बनाने के लिए प्रयास करना चाहिए गलत नहीं है,। इसके बाद के संस्करण समाधान के साथ, अपने अंतिम उत्पाद एक अनावश्यक साथ खत्म हो जाएगा web.xml फ़ाइल। आपको इस समस्या को ठीक करने के बजाय टूल (यानी मावेन) का निर्माण करना चाहिए।
मार्टिंज बर्गर

आप यह भी उल्लेख कर सकते हैं: eggylife.co.uk/2009/12/20/…
सत्येंद्र

यह आपके प्रोजेक्ट में अनावश्यक फ़ाइल जोड़ देगा और दूसरी बात यह है कि web.xml लगभग पुराना है। यदि आप इस त्रुटि को दूर करना चाहते हैं, तो बस बल को अद्यतन करें
मावन

393

यह एक Maven त्रुटि है। यह कहता है कि यह आपके प्रोजेक्ट में web.xml फ़ाइल की उम्मीद कर रहा है क्योंकि यह एक वेब एप्लिकेशन है, जैसा कि संकेत दिया गया है <packaging>war</packaging>। हालाँकि, हाल के वेब अनुप्रयोगों के लिए एक web.xml फ़ाइल पूरी तरह से वैकल्पिक है। मावेन को इस सम्मेलन को पकड़ने की आवश्यकता है। अपने Maven को यह जोड़े pom.xmlजाने के लिए Maven पकड़ने और आप एक बेकार जोड़ने की जरूरत नहीं है web.xmlअपने प्रोजेक्ट में:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

खाली जोड़ने की तुलना में यह एक बेहतर समाधान है web.xmlक्योंकि इस तरह से आपका अंतिम उत्पाद साफ रहता है, आप बस अपने निर्माण मापदंडों को बदल रहे हैं।

मावेन के अधिक वर्तमान संस्करणों के लिए आप छोटे संस्करण का भी उपयोग कर सकते हैं:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

28
यह उत्तर अन्य की तुलना में अधिक तार्किक है।
smwikipedia

7
यदि आप एक सर्वलेट 3.0+ वातावरण में उपयोग कर रहे हैं और Interface WebApplicationInitializerइस उत्तर के किसी भी कार्यान्वयन के लिए सही दृष्टिकोण है। यह इस समस्या को हल करने का समझदार तरीका है - web.xmlइसके बिना जीने के लिए कदम उठाने के बाद कोई मतलब नहीं !
गीब

4
यह खाली वेब बनाने का एक बेहतर उत्तर है।
xml

1
मावेन के बिना भी काम करता है> अद्यतन परियोजना। तो इसकी जरूरत नहीं है।
लकी

13
कृपया नीचे दिए गए सुझाव के अनुसार अपने उत्तर को छोटे विन्यास के लिए अद्यतन करने पर विचार करें । जिसमें <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>अधिक वर्बोज़ प्लगइन कॉन्फ़िगरेशन सेटिंग्स के बजाय पर्याप्तियाँ शामिल हैं।
ओलिवियर Cailloux

32

यदि आपके पास पहले से ही web.xml अंडर / src / main / webapp / WEB-INF है, लेकिन आपको अभी भी त्रुटि मिलती है "web.xml याद आ रही है और सही पर सेट है", तो आप जाँच कर सकते हैं कि क्या आपने / src / main / webapp को शामिल किया है आपका प्रोजेक्ट स्रोत

यहां वे चरण हैं जिनका आप अनुसरण कर सकते हैं:

  1. आप अपनी परियोजना पर राइट क्लिक करके और उसके गुण संवाद खोलें, और फिर "परिनियोजन असेंबली" खोल सकते हैं, जहाँ आप फ़ोल्डर / src / main / webapp जोड़ सकते हैं। सेटिंग सहेजें, और फिर,
  2. ग्रहण मेनू प्रोजेक्ट पर जाएं -> स्वच्छ ... प्रोजेक्ट को साफ करें, और त्रुटि दूर होनी चाहिए।

(मैंने इसे ग्रहण मंगल के साथ सत्यापित किया)


"एक्लिप्स मार्स" के तहत एक ही समस्या का अनुभव किया और आपका वर्णित समाधान सही काम करता है! धन्यवाद
हर्टमट पी

मेरे लिए काम नहीं किया ... मैं पहले से ही उन फ़ोल्डरों को कर रहा हूं और मैंने झूठे लापता web.xml को स्थापित करने की भी कोशिश की। यह काम नहीं कर रहा है ....
बाराद्वज आर्यसोमयजुला

19

यदि आप स्प्रिंग टूल सूट का उपयोग करते हैं, तो Generate Dep तैनाती Descriptor Stub का विकल्प Java EE टूल्स के अंतर्गत ले जाया जाता है, इसलिए आप:

  1. अपने प्रोजेक्ट पर राइट क्लिक करें
  2. Java EE Tools को चुनें
  3. का चयन करें उत्पन्न तैनाती डिस्क्रिप्टर स्टब विकल्प

यह src / main / webapp / WEB-INF / फ़ोल्डर के अंदर web.xml फ़ाइल बनाएगा, और निश्चित रूप से Maven की pom.xml फ़ाइल से त्रुटि को दूर करेगा।

यहाँ छवि विवरण दर्ज करें


16

मेरी भी यही समस्या है। अध्ययन और googling के बाद, मैं अपने समस्या हल हो गई है:

प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करें Java EE Tools, चुनें, चुनें Generate Deployment Descriptor Stub। यह web.xmlफ़ोल्डर में बनाएगा src/main/webapp/WEB-INF


3
मैं बॉयलरप्लेट को कोड में जोड़ने की सिफारिश नहीं करूंगा, सिर्फ इसलिए कि आपका बिल्ड टूल एक त्रुटि देता है।
मार्टिंज बर्गर

16

आप यह भी कर सकते हैं जो कम क्रिया है

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

सबसे सुरुचिपूर्ण समाधान IMHO। डॉक्टर देखें (और एक पुराना ग्रहण बग जो इस समाधान को काम करने से रोकता है, अब हल हो गया है)।
ओलिवर Cailloux

9

ग्रहण गलत डिफ़ॉल्ट webappनिर्देशिका को पहचानता है । इसलिए हमें इसे स्पष्ट रूप से निर्धारित करना चाहिए maven-war-plugin

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
        <webappDirectory>src/main/webapp</webappDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

एक बार इस सेटिंग को सहेजने के बाद, यदि इसे हटा दिया जाता है, तो त्रुटि कभी नहीं घटेगी। (मैं क्यों नहीं समझा सकता हूँ।)


3

मुझे एक ही समस्या थी, भले ही मेरे पास 'src/main/webapp/WEB-INF/'सही के साथ फ़ोल्डर था web.xml

Maven build..मेरे द्वारा निष्पादित किए जाने के बाद समस्या फिर से गायब हो गई (maven-> e ग्रहण) कॉन्फ़िगरेशन mvn eclipse:clean eclipse:eclipse

और फिर मैं इस्तेमाल किया Maven -> Update Project(eclipse-> Maven) प्लगइन विशिष्ट विकल्प जोड़ने के लिए।


यहाँ भी, हालाँकि मैंने git reset का उपयोग किया है
HAD

धन्यवाद, इससे मुझे भी मदद मिली। राइट क्लिक -> मावेन -> अपडेट प्रोजेक्ट
ट्रेबोर

2

मुझे केवल ग्रहण में इस समस्या का सामना करना पड़ा, मावेन कमांड लाइन में सब कुछ ठीक रहा, और मेरी web.xml फ़ाइल मौजूद थी। यह एक परिपक्व परियोजना (पहले से ही उत्पादन में बाहर तैनात) कि प्रभावित हुआ था। मेरी समस्या ग्रहण मेटाडेटा से जुड़ी थी। मेरे .settings / फ़ोल्डर में से किसी एक फ़ाइल के साथ एक समस्या थी, विशेष रूप से org.eclipse.wst.common.component को बदल दिया गया था। मैं इस फ़ाइल को इसके पूर्व संस्करण में पुनर्स्थापित करने में सक्षम था, जिसने मेरे मामले में समस्या को हल किया।

ध्यान दें कि यूसी का जवाब मेरे लिए काम नहीं करता था, जब मैंने ग्रहण संपत्तियों में तैनाती विधानसभा पर क्लिक करने की कोशिश की, तो मुझे एक त्रुटि मिली जिसमें कहा गया था "वर्तमान में प्रदर्शित पृष्ठ में अमान्य मान हैं।"


मेरे पास एक ही स्थिति थी और मुझे अपने .settings / फ़ोल्डर से org.eclipse.wst.common.component फ़ाइल को पुनर्स्थापित करना था और मेरा प्रोजेक्ट अब काम करता है, जाहिर है घटक की सामग्री हटा दी गई थी, इसलिए यह मेरे वेब का पथ नहीं है। xml फ़ाइल। इसके अलावा जब मैंने ग्रहण संपत्तियों में तैनाती असेंबली खोलने का प्रयास किया, तो वही त्रुटि मिली: "वर्तमान में प्रदर्शित पृष्ठ में अमान्य मान हैं।" मुझे यह उत्तर थोड़ा देर से मिला लेकिन यह कैसे मैं इसे हल करता हूं। महान जवाब btw।
जॉर्ज वाल्डेस

2

Web.xml के साथ प्रोजेक्ट के लिए वर्तमान प्रोजेक्ट -> गुण -> परिनियोजन असेंबली, जहाँ आप फ़ोल्डर src / main / webapp जोड़ सकते हैं। बदलाव सुरक्षित करे। जा रही परियोजना को साफ करें।

Web.xml के साथ प्रोजेक्ट के लिए गुण टैग के तहत pom.xml में गलत पर सेट विफलताOnMissingWebXml प्रस्तुत नहीं करें।


1

यह करो:

जाओ और परिनियोजन वर्णक पर राइट क्लिक करें और परिनियोजन वर्णक स्टब जनरेट करें पर क्लिक करें।


0

यह समझ में नहीं आता है कि web.xml बनाने के लिए सिर्फ एलिप्से चाहते हैं, यहां तक ​​कि कोई आवश्यकता नहीं है। यह मामला है अगर आपके पास सर्वलेट कॉनटिनर एम्बेडेड है या xml cfg के बिना रह रहा है जैसे स्प्रिंग-बूट करता है। आप सिर्फ प्रोजेक्ट स्तर या वैश्विक स्तर पर ग्रहण में जावा (बेकार सामान) को व्यवहार्य करते हैं

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK

0

अपनी परियोजना का चयन करें और "परिनियोजन डिस्क्रिप्टर" विकल्प का चयन करें और फिर "डेसिपेट तैनाती डिस्क्रिप्टर स्टब" चुनें


0

का चरण: अपनी परियोजना का चयन करें और "परिनियोजन वर्णक" विकल्प का चयन करें और फिर "जनरेट परिनियोजन वर्णक स्टब" चुनें ठीक काम करता है। मुद्दा यह है कि यह हमेशा ऐसा मामला नहीं होता है, जिसके लिए हमें web.xml की आवश्यकता होती है, इसलिए pom.xml पर झूठी अपील करना सबसे अच्छा है


0

पर राइट क्लिक करें project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

फिर दबाएं अगला यह WEB-INFएक web.xmlफ़ाइल के साथ फ़ोल्डर बना देगा ।

2

बस हो गया।




-1

प्रोजेक्ट पर राइट क्लिक करें, Maven -> Update Project ... पर जाएं , फिर Snapshots / Releases के फोर्स अपडेट की जांच करें, फिर Ok पर क्लिक करें । हॊ गया!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.