2010-08-08 14 views
8

मेरे पास इस तरह का कोड Main.java:FileNotFoundException..Classpath संसाधन वसंत में नहीं मिला?

AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); 

हाल ही में यह काम कर रहा था, लेकिन मुझे नहीं पता कि यह नीचे दिए गए अपवाद के साथ विफल क्यों हुआ:

अपवाद थ्रेड में "मुख्य" org.springframework.beans.factory.BeanDefinitionStoreException: IOException वर्ग पथ संसाधन [spring-config.xml] से XML दस्तावेज़ को पार्स करना; नेस्टेड अपवाद java.io.FileNotFoundException है: क्लास पथ संसाधन [spring-config.xml] नहीं खोला जा सकता है क्योंकि यह

मौजूद नहीं है spring-config.xml में है src/main/resource फ़ोल्डर।

दरअसल मैं एनोटेशन के बारे में जानना चाहता था: @ पोस्टकस्ट्रक्चर और @ प्रिडेस्ट्राय, इसलिए मैंने जेडीके 1.5 से जेडीके 1.6 में बिल्ड पथ बदल दिया।

तब से समस्या शुरू हुई ...

कोई सुराग क्यों काम नहीं कर रहा है?

नोट: अगर कोई मेरी परियोजना संरचना देखना चाहता है तो कृपया इस लिंक का पालन करें http://code.google.com/p/javapracticeram/source/browse/trunk/SpringExample/

संपादित करें: alt text http://i38.tinypic.com/348nbde.png

उत्तर

0

यह वसंत-config.xml की वजह से है classpath में नहीं है: किसी भी अपने प्रोजेक्ट संरचना देखना चाहता है इस लिंक http://code.google.com/p/javapracticeram/source/browse/trunk/SpringExample/

संपादित करें का पालन करें।

अपने क्लासपाथ में spring-config.xml का पूरा पथ जोड़ें।

अपनी परियोजना चलाने के लिए निष्पादित आदेश भी लिखें। आप कमांड में क्लासपाथ देख सकते हैं।

+0

Yok, धन्यवाद मैं अपने reply..As के लिए सवाल कॉन्फ़िग फ़ाइल संसाधन फ़ोल्डर जो निर्माण पथ में है में उल्लेख किया है (कृपया स्क्रीन शॉट देखें) .. कैसे मैं अपने प्रोजेक्ट को चलाने मैं सिर्फ है main.jav फ़ाइल चलाएं..और मेरा प्रोजेक्ट शुरू होता है ... क्या आप कृपया सुझाव दे सकते हैं कि आप क्या सुझाव दे रहे हैं .. मैं समझ नहीं सका .. आपके उत्तर के लिए धन्यवाद .. – javanoob

+0

@javanerd Build Path जीता ' अपने कार्यक्रम को चलाने के लिए इस्तेमाल नहीं किया जाएगा। क्या आप रन कॉन्फ़िगरेशन के लिए स्क्रीनशॉट भी डाल सकते हैं। मुझे लगता है कि आप ग्रहण से अपना प्रोग्राम चला रहे हैं। – YoK

+0

मुझे नहीं पता कि मैंने क्या किया है लेकिन यह अब काम कर रहा है ... धन्यवाद मेरे प्रश्न [मूर्ख] के लिए धन्यवाद योक :) – javanoob

3

SpringExample/target/classes की सामग्री की जांच करें। वसंत-config.xml वहाँ है? यदि नहीं, तो स्प्रिंगएक्स नमूना/लक्ष्य/निर्देशिका को मैन्युअल रूप से निकालने का प्रयास करें, और ग्रहण में प्रोजेक्ट => क्लीन ... के साथ पुनर्निर्माण को मजबूर करें।

+1

क्या आप कृपया यह बता सकते हैं कि ऐसा क्यों होता है। इस मुद्दे को बहुत से डिबग करने के बाद, मैंने आपके उत्तर पर ठोकर खाई लेकिन मैं अभी भी इस मुद्दे के कारण को समझ नहीं पा रहा हूं। –

+0

उपरोक्त स्क्रीनशॉट में जावा बिल्ड पथ कॉन्फ़िगरेशन के आधार पर, एक्लिप्स डंप संकलित कक्षाओं (साथ ही क्लासपाथ से कुछ भी, .xml फ़ाइलों सहित) लक्ष्य/कक्षाओं में डंप करता है। अन्य निर्माण उपकरण किस प्रकार उपयोग में हैं (मेवेन, चींटी, एसबीटी, इत्यादि) के आधार पर, कुछ ग्रहण के ज्ञान के बाहर उस निर्देशिका को मिटा रहा है, और ग्रहण में एक स्वच्छ मजबूर करना सुनिश्चित करेगा कि लक्ष्य/कक्षाएं पुनर्निर्मित हो जाएंगी। – earldouglas

0

दो बातें उनका कहना है लायक:

  1. अपने वसंत संदर्भ निर्भरता के दायरे "क्रम" नहीं होना चाहिए, लेकिन "संकलन", जो कि डिफ़ॉल्ट है, तो आप सिर्फ गुंजाइश लाइन को हटा सकते हैं ।
  2. मैवेन के साथ निर्माण करते समय एनोटेशन को संभालने के लिए आपको कम से कम जावा 1.5 को संकलित करने के लिए कंपाइलर प्लगइन को कॉन्फ़िगर करना चाहिए। (यह भी, आईडीई सेटिंग को प्रभावित कर सकते हैं, हालांकि ग्रहण देखभाल करने के लिए नहीं करता है।)

    <build> 
        <plugins> 
         <plugin> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <configuration> 
           <source>1.5</source> 
           <target>1.5</target> 
          </configuration> 
         </plugin> 
        </plugins> 
    </build> 
    

उसके बाद, Maven से अपनी परियोजना को फिर से कॉन्फ़िगर इसे ठीक करना चाहिए। मुझे यह नहीं पता कि ग्रहण में यह कैसे करना है, लेकिन यदि आप प्रोजेक्ट नोड पर राइट क्लिक करते हैं और मेन्यू के चारों ओर पोक करते हैं तो आपको इसे ढूंढना चाहिए।

11

your classpath को देखते हुए आप src/main/resources और src/test/resources को बाहर:

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 

इसके लिए एक कारण है? spring-config.xml पर क्लासपाथ को बाहर करने की कोशिश न करें :)

0

मुझे अपनी परियोजना चलाने के दौरान एक ही समस्या हो रही थी। फाइल संरचना की जांच करने पर, मुझे एहसास हुआ कि स्प्रिंग की एक्सएमएल फाइल परियोजना के पैकेज के अंदर थी और इस प्रकार यह नहीं मिला। मैंने इसे पैकेज के बाहर रखा और यह ठीक काम किया।

-2

ऐसी त्रुटि को संभालने का सबसे अच्छा तरीका- "एनोटेशन का उपयोग करें"। उस वर्ग में spring.xml- <context:component-scan base-package=com.SpringCollection.SpringCollection"/>

ऐड एनोटेशन जिसके लिए आप बीन आईडी का उपयोग करना (i वर्ग का उपयोग कर रहा "सबसे पहले") चाहते हैं -

@Component 

सार्वजनिक वर्ग प्रथम {

परिवर्तन में मुख्य वर्ग ** -

ApplicationContext संदर्भ = नई AnnotationConfigApplicationContext (First.class); इसका उपयोग करें।

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