首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

學生管理系統 Tomcat 啟動報錯:缺少 freemarker.jar 導致 Struts2 初始化失敗

     編輯:C++ 入門

錯誤現象

Tomcat 7.0.53 啟動部署 StudentSystem 應用時,控制台拋出嚴重錯誤:

嚴重: Dispatcher initialization failed
Unable to load configuration. - bean - jar:file:/.../struts2-core-2.3.16.3.jar!/struts-default.xml:69:87
Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader
Caused by: java.lang.ClassNotFoundException: freemarker.cache.TemplateLoader

導致 Filter `struts2` 啟動失敗,上下文 `/StudentSystem` 啟動失敗。

根因分析

Struts 2.3.16.3 內部依賴 FreeMarker 模板引擎(用於標籤渲染),但項目 `WEB-INF/lib` 目錄下缺少 `freemarker-2.3.19.jar`(或兼容版本)。類加載器嘗試加載 `org.apache.struts2.views.freemarker.FreemarkerThemeTemplateLoader` 時找不到 `freemarker.cache.TemplateLoader` 類,拋出 `NoClassDefFoundError` 進而觸發 `ClassNotFoundException`。

解決方案

  1. 下載 freemarker-2.3.19.jar(建議與 Struts 版本匹配,可從 Maven Central 或 FreeMarker 官網獲取)。
  2. 將該 JAR 放入項目 `WEB-INF/lib` 目錄。
  3. 若使用 Maven,添加依賴:
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.19</version>
    </dependency>
  4. 重新部署項目,啟動 Tomcat 驗證錯誤消失。

避坑指南

  • Struts 2.3.x 系列強依賴 FreeMarker,升級 Struts 版本時請同步檢查 FreeMarker 版本兼容性。
  • 生產環境建議使用依賴管理工具(Maven/Gradle)避免手動管理 JAR 導致遺漏。
  • 若項目不使用 FreeMarker 模板,可在 `struts.xml` 中設置 `struts.ui.theme=simple` 並排除 FreeMarker 依賴,但需確認無標籤依賴該引擎。

總結

缺少 `freemarker.jar` 是 Struts2 應用啟動失敗的常見原因之一,補全依賴即可快速恢復。養成查看完整異常堆疊(特別是 `Caused by` 鏈)的習慣,能精準定位缺失類所屬的第三方庫。

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