2012-10-05 33 views
10

में classpath संसाधन नहीं मिल सकता है मैं एक परियोजना इस तरह का आयोजन किया है: जो WEB-INF/lib में सही ढंग से शामिल किया गया है जब मैं तैनातस्प्रिंग एक आंतरिक जार फ़ाइल

core 
    -- /src/main/resources/company/config/spring-config.xml 
webapp 
    -- /WEB-INF/applicationContext.xml 

webapp core.jar पर निर्भर करता है,।

web.xml में मेरे पास है:

<param-value> 
    /WEB-INF/applicationContext.xml 
</param-value> 

और applicationContext.xml में मेरे पास है:

<import resource="classpath:/company/config/spring-config.xml" /> 

लेकिन जब मैं चलाने के लिए, मैं इस त्रुटि मिलती है:

2012-10-04 20:03:39,156 [localhost-startStop-1] springframework.web.context.ContextLoader ERROR: Context initialization failed 
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:/company/config/spring-config.xml] 
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [company/config/spring-config.xml]; nested exception is java.io.FileNotFoundException: class path resource [company/config/spring-config.xml] cannot be opened because it does not exist 
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) 
.... 
Caused by: java.io.FileNotFoundException: class path resource [company/config/spring-config.xml] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 
... 36 more 

जब spring-config.xml में है वेबपैप, सब कुछ ठीक काम करता है।

मैंने देखा कि अग्रणी / स्टैक ट्रेस पर कुछ त्रुटियों से हटा दिया गया है, और मुझे आश्चर्य है कि इसका इसके साथ कुछ लेना है या नहीं।

इसके अलावा, यदि मैं मायने रखता हूं, तो मैं वसंत 2.5 का उपयोग कर दुर्भाग्य से हूं।

+1

निकालें//company/config/spring-config.xml से और उसके बाद जाँच – Satya

+0

@Satya: धन्यवाद, मैंने कोशिश की है कि, मैं एक ही परिणाम मिलता है। – JBCP

+0

@JBCP - जब आप प्रमुख स्लैश को हटाते हैं तो यह काम नहीं कर सकता है, क्योंकि आपके पास कुछ अतिरिक्त समस्या है, लेकिन यह निश्चित रूप से अग्रणी स्लैश के साथ काम नहीं करेगा। http://blog.carbonfive.com/2007/05/17/using-classpath-vs-classpath-when-loading-spring-resources/ – GreyBeardedGeek

उत्तर

13

भविष्य के संदर्भ के लिए, मैंने बहुत डीबगिंग के बाद समस्या का पता लगाया। यह पता चला ग्रहण एक जार के रूप में मेरे "मूल" लाइब्रेरी बनाना था, लेकिन एक वेब अनुप्रयोग पैकेज लेआउट के साथ है, तो बजाय मेरी संसाधन के यहाँ स्थित किया जा रहा:

/company/config/spring-config.xml 

इसे यहाँ स्थित था:

/WEB-INF/company/config/spring-config.xml 

जो समस्या का कारण बन गया। मैंने कुछ बार पहले जार की जांच की थी, लेकिन कभी भी सादे दृष्टि में छुपा नहीं था "/ वेब-आईएनएफ"।

परियोजना निकाला जा रहा है और (Maven pom.xml फ़ाइल के माध्यम से) ग्रहण में पुनः आयात समस्या को ठीक करने के लिए पर्याप्त नहीं था।

मुझे ग्रहण-विशिष्ट। प्रोजेक्ट, क्लासपाथ, और .settings फ़ाइलों को मैन्युअल रूप से हटा देना पड़ा। जब मैंने ऐसा किया और परियोजना को दोबारा आयात किया तो सब ठीक हो गया।

सबक का नैतिक है: ALWAYS अपवाद कहता है कि "फ़ाइल नहीं मिली" के दौरान अपने संसाधन पथ की जांच करें।