2015-11-15 84 views
0

我有一個非常簡單的彈簧測試應用程序。但即使一切看起來都是有序的,我也會得到例外。我可能會錯過一些東西。請檢查圖片以查看項目結構和web.xml文件以及異常情況: -Spring配置錯誤WEB-INF/servlet-context.xml FileNotFoundException

efinitionStoreException:IOException從類路徑資源解析XML文檔[WEB-INF/servlet-context.xml];嵌套異常是java.io.FileNotFoundException:類路徑資源[WEB-INF/servlet-context.xml]無法打開,因爲它不存在 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java :341)

enter image description here

+0

'WEB-INF'不是一個類路徑資源,而是一個servlet資源...刪除'classpath:'前綴或將您的XML文件放置到src/main/resources'中,從它們被複制到'WEB-INF /類「(它在類路徑上)。 –

回答

3

有兩種資源,在servlet環境:

  • 的servlet資源 - 文件納的Web應用程序(通過ServletContext加載根)
  • 的classpath資源 - 基於Web應用的classpath資源(通過ClassLoader加載)

當春乃應該加載其配置,它需要知道使用哪種機制。

  • 類路徑:富/ bar.xml - 將加載作爲類路徑資源
    • 檢查WEB-INF/classesWEB-INF/lib/*.jar內容和其他共享servlet容器的classpath位置
    • 使用maven和其項目結構時
    • ,來自src/main/resources的所有文件將被放置在類路徑上
  • foo/b ar.xml - 將使用maven時作爲servlet的資源
    • 加載和其項目結構src/main/webapp文件夾是你的應用程序

TL的根; DR正如我在評論中寫道,在引用XML文件時刪除前綴classpath:或將XML文件移動到src/main/resources並刪除WEB-INF部分。