首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SpringMVC 啟動報錯 FileNotFoundException:springmvc-servlet.xml 找不到?一招解決

     編輯:程式設計疑難解答

錯誤堆棧速讀

org.springframework.beans.factory.BeanDefinitionStoreException: 
IOException parsing XML document from ServletContext resource [/WEB-INF/springmvc-servlet.xml]; 
nested exception is java.io.FileNotFoundException: 
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]

核心異常:FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml] —— 容器在 WEB-INF 目錄下找不到 SpringMVC 配置文件。

三大常見原因與對策

1. web.xml 中 contextConfigLocation 路徑寫錯(高發)

檢查 web.xml 中 DispatcherServlet 的初始化參數:

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springmvc-servlet.xml</param-value> <!-- 必須與實際文件路徑完全一致 -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
  • 路徑區分大小寫(Linux 部署時尤為關鍵)
  • 確認文件確實放在 src/main/webapp/WEB-INF/springmvc-servlet.xml(Maven 標準目錄)
  • 若用註解配置(@EnableWebMvc + WebApplicationInitializer),則不需要此 XML,需移除 contextConfigLocation 參數

2. 文件未打包進 WAR/JAR(Maven/Gradle 配置缺失)

確保 pom.xml 包含資源打包配置:

<build>
    <resources>
        <resource>
            <directory>src/main/webapp</directory>
            <targetPath>WEB-INF</targetPath>
            <includes><include>**/*.xml</include></includes>
        </resource>
    </resources>
</build>

或在 IDEA 中右鍵項目 → Maven → Reimport,確認 target 目錄下生成的 WAR 包含該文件。

3. 文件名/目錄名拼寫錯誤

  • springmvc-servlet.xml vs spring-mvc-servlet.xml(中劃線)
  • WEB-INF vs web-inf(大小寫)
  • 文件誤放在 src/main/resources 而非 src/main/webapp/WEB-INF

快速排查清單

  1. 打開項目結構視圖,確認 springmvc-servlet.xml 物理位置
  2. 對比 web.xml 中 contextConfigLocation 值,逐字母核對
  3. 執行 mvn clean package,解壓生成的 WAR,驗證 WEB-INF/springmvc-servlet.xml 存在
  4. 若使用註解配置類(WebAppInitializer),刪除 web.xml 中 DispatcherServlet 的 init-param

最佳實踐建議

  • 採用純註解配置(@Configuration + @ComponentScan + @EnableWebMvc),徹底告別 XML 找不到的煩惱
  • 統一命名規範:[servlet-name]-servlet.xml,如 springmvc-servlet.xml
  • CI/CD 流程中加入「驗證 WAR 關鍵文件存在」步驟

遇到 FileNotFoundException 不要慌,90% 是路徑拼寫或打包配置問題,按清單逐項排查,分分鐘解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved