एक्लिप्स बिल्ड पाथ नेस्टिंग एरर्स


122

मैं अपनी कक्षा के लिए एक साधारण JSP / सर्वलेट / टॉमकैट वेबएप पर काम कर रहा हूं। प्रोफेसर ने हमें एक फ़ोल्डर संरचना का उपयोग करने के लिए कहा जो डिफ़ॉल्ट गतिशील वेब परियोजना संरचना से थोड़ा अलग है। Webcontent फ़ोल्डर का उपयोग करने के बजाय वह हमारे सभी स्रोत कोड को src / main / java और src / main / webapp के तहत चाहता है।

जब मैं एप्लिकेशन चलाता हूं तो मेरी स्वागत योग्य फ़ाइल प्रदर्शित होती है, लेकिन जब मैं अपने सर्वलेट्स को प्राप्त करने का प्रयास करता हूं तो मुझे यह मिलता है:

 Http 500 SEVERE: Allocate exception for servlet InitDb

java.lang.ClassNotFoundException। मुझे पूरा यकीन है कि यह एक बिल्ड पाथ एरर है। मेरे पास निर्माण पथ पर अंतिम / src है, लेकिन मुझे चेतावनी मिल रही है

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the    nesting exclude 'main/' from 'final/src'

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

मेरी तैनाती विधानसभा में यह है:

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

जब मैं मुख्य / चेतावनी को छोड़ देता हूं, तो चेतावनी दूर हो जाती है, लेकिन यह समस्या को ठीक नहीं करता है। कोई भी सलाह मेरे लिए प्रशंसनीय होगी। धन्यवाद।

जवाबों:


309

जब मैंने एक नया प्रोजेक्ट बनाया था तब भी मुझे यही समस्या थी। मैं ग्रहण के भीतर जावा परियोजना का निर्माण कर रहा था, फिर इसे मवेंज़ करना, फिर जावा में जाकर पथ गुणों को हटाना src/और जोड़ना src/main/javaऔर src/test/java। जब मैं मावेन अपडेट चलाता हूं तो यह नेस्टेड पथ त्रुटि देता था।
फिर मुझे आखिरकार एहसास हुआ कि मैंने उस एंट्री को पहले नहीं देखा <sourceDirectory>src</sourceDirectory>था- पोम फाइल में एक लाइन लिखी होती है जब मैं इसे मैवेन करता हूं। इसे हटाने के बाद इसका समाधान किया गया।


1
यह कई यादृच्छिक चालों में से एक है। क्यों नहीं समझा रहा हूं। इस प्रकार कम सहायक।
smwikipedia

4
मैंने बस पोम एंट्री का नाम बदलकर स्क्रब / मेन / जावा रखा और सब अच्छा था। पोस्ट के लिए धन्यवाद acheron55
बीजर

क्या आपने इसे वहाँ रखा था? या यह कहां से आता है?
लाइन

23

मैं इस धागे का एक गैर-मवनीश उत्तर में फेंकना चाहता था।

संस्करण नियंत्रण और सख्त निर्देशिका संरचना कारणों के कारण, मैं Acheron के उत्तर (सर्वोत्तम उत्तर) को हटाने src/और जोड़ने src/main/javaऔर src/test/javaनिर्माण पथ के समान कुछ करने में असमर्थ था ।

मैं वास्तव में कुछ हफ्तों के लिए इस नेस्टेड बिल्ड पथ समस्या से जूझ रहा था। समस्या का उत्तर त्रुटि संदेश में दिया गया है:

To enable the nesting exclude 'main/' from 'final/src'

ठीक कर

अपने निर्माण पथ में, आप अपने संपादन करने की जरूरत है Inclusion and Exclusion Patternsपर क्लिक करके Excluded: (None)और फिर Edit...:

  1. नेविगेटर पर जाएं और प्रोजेक्ट पर राइट क्लिक करें
  2. पथ का निर्माण
  3. कॉन्फ़िगर पथ बनाएँ
  4. स्रोत (टैब)

बहिष्करण पैटर्न

वहां आप main/webapp/WEB-INF/classesएक के रूप में जोड़ सकते हैं Exclusion Pattern। फिर इसे आपको main/webapp/WEB-INF/classesएक अलग स्रोत फ़ोल्डर के रूप में बिल्ड पथ में जोड़ने की अनुमति देनी चाहिए ।


10

इसे इस्तेमाल करे:

लाइब्रेरी टैब से:

Eclipse -> right click on project name in sidebar -> configure build path -> Libraries

अपनी वेब एप्लिकेशन लाइब्रेरी निकालें:

click on "Web App Libraries" -> click "remove"

उन्हें वापस जोड़ें:

click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"

"वेब ऐप लाइब्रेरीज़" को हाइलाइट करना:

"वेब ऐप लाइब्रेरीज़" को हाइलाइट करना


3

मेरे पास एक ही मुद्दा था और ऊपर सही उत्तर मेरे लिए काम नहीं करता था। मैंने इसे हल करने के लिए क्या किया था Build Path->Configure Build Pathऔर स्रोत टैब के तहत मैंने सभी स्रोतों को हटा दिया (जिसमें केवल एक स्रोत था) और उन्हें वहां से पुन: कॉन्फ़िगर किया। मैंने परियोजना को ग्रहण से हटा दिया और त्रुटि को दूर करने के लिए फिर से मावेन परियोजना का आयात किया।


3

मेरे मामले में मेरे पास ग्रहण में एक प्रकृति परियोजना है , समस्या एक में थी build.gradle, जहां यह sourceSetsनिर्दिष्ट किया गया है:

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
 }

यह अच्छी तरह से काम करता है के साथ लगता है IntelliJ , तथापि से लगता है ग्रहण घोंसला की तरह नहीं है src, src/java, src/resources। में ग्रहण मैं इसे में परिवर्तित करना होगा:

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
}

3

यहाँ एक सरल उपाय है:

  1. परियोजना >> संपत्ति >> निर्माण पथ पर राइट क्लिक करें;
  2. स्रोत टैब में, सभी स्रोत फ़ोल्डर का चयन करें;
  3. उन्हें हटा दो;
  4. प्रोजेक्ट पर राइट क्लिक करें, Maven >> प्रोजेक्ट अपडेट करें।

2

आपको अपने स्रोत और अपनी लक्ष्य निर्देशिका को अलग करना होगा जहां बिल्ड आउटपुट जाता है। यह नोट करना भी महत्वपूर्ण है कि कोई भी क्लास फाइल्स कभी भी सोर्स डायरेक्टरी में खत्म नहीं हो सकती हैं। यह आपके प्रोफेसर की सलाह के खिलाफ नहीं है - वास्तव में वह मावेन मानक स्रोत संरचना को बढ़ावा दे रहा है ।/src/main.java और ./src/main/webapp। दूसरे को उदाहरण देना चाहिए। WEB-INF / web.xml फ़ाइल अनिवार्य है, लेकिन आप वहां कभी वास्तविक कक्षाएं नहीं लगाएंगे।

आपको जो परिवर्तन करने की आवश्यकता है वह आपकी लक्षित निर्देशिका है। मेरा सुझाव है कि समान मानकों के साथ जाएं और इसके लिए "./getget" नाम चुनें। सभी निर्मित फाइलें यहां जाकर पैकेजिंग की जाएंगी, जिससे सही तैनाती योग्य कलाकृति तैयार होगी। क्या आपको बाद में मावेन का उपयोग करने के लिए पलायन करना चाहिए, यह एक स्क्रिप्टेड, दोहराए जाने वाले तरीके से ऐसा करने में भी मदद करेगा।

आशा है कि आपके मुद्दे को साफ करता है।


1

स्वीकृत समाधान मेरे काम नहीं आया लेकिन मैंने प्रोजेक्ट सेटिंग्स पर कुछ खुदाई की।

निम्नलिखित समाधान ने मेरे लिए इसे कम से कम निर्धारित किया है यदि आप एक डायनामिक वेब प्रोजेक्ट का उपयोग कर रहे हैं:

  1. प्रोजेक्ट पर राइट क्लिक करें फिर प्रॉपर्टीज। (या परियोजना पर पूरी तरह दर्ज करें)
  2. परिनियोजन असेंबली के अंतर्गत "src" निकालें।

आपको src / main / java जोड़ने में सक्षम होना चाहिए। यह स्वचालित रूप से इसे परिनियोजन असेंबली में भी जोड़ता है।

कैविएट: यदि आपने एक src / test / java नोट जोड़ा है कि यह इसे परिनियोजन असेंबली में भी जोड़ता है। आम तौर पर, आपको इसकी आवश्यकता नहीं है। आप इसे हटा सकते हैं।


1

इसने मुझे ग्रहण के साथ फिक्सिंग ग्लिट्स के एक विशाल खरगोश छेद को नीचे ले जाना शुरू कर दिया, हालांकि मैंने सिर्फ प्रोजेक्ट को एक्लिप्स से हटा दिया और इसे ठीक करने के लिए इसे फिर से खोल दिया।


0

ग्रहण संकलक को ठीक से काम करने के लिए आपको स्रोत पथ से अंतिम / src को हटाने और इसके बजाय अंतिम / src / main / rava को जोड़ने की आवश्यकता है। यह आपकी समस्या को भी हल कर सकता है क्योंकि अब बिल्ड निर्देशिका जावा स्रोत फ़ोल्डर के अंदर नहीं होगी।


0

एसटीएस आईडीई

यह निर्भर करता है कि कौन सा फ़ोल्डर बता रहा है "सोर्स फोल्डर के रूप में उपयोग करें"। चित्र पर संरचना में अगर कोई इसे फ़ोल्डर को "लक्ष्य" या "उत्पन्न" कहता है, तो उसे "नेस्टेड" त्रुटि मिलती है। लेकिन "cxf" फोल्डर पर, जो कि आखिरी है, pom.xml के 'प्लगइन' सेक्शन में बताया गया है और जहाँ से पैकेज स्ट्रक्चर शुरू होता है (जैसा कि .wsdl फाइल पर दिखाया गया है), अर्थात - इसे 'सोर्स' करने के लिए सही फ़ोल्डर। , तो कोई त्रुटि नहीं है


0

इसी तरह का मुद्दा मिला। निम्नलिखित चरणों का पालन किया, समस्या हल की:

  1. ग्रहण में प्रोजेक्ट निकालें।
  2. .Project फ़ाइल हटाएं और। सेटिंग्स फ़ोल्डर।
  3. मौजूदा मावेन परियोजना के रूप में आयात परियोजना को फिर से ग्रहण करने के लिए।

-3

दो फ़ोल्डर बनाएँ: final/src/स्रोत जावा कोड को स्टोर करने के लिए, और final/WebRoot/

आप स्रोत और वेबरूट को एक साथ नहीं रख सकते। मुझे लगता है कि आप अपने शिक्षक को गलत समझ सकते हैं।

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