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`。
freemarker-2.3.19.jar(建議與 Struts 版本匹配,可從 Maven Central 或 FreeMarker 官網獲取)。<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.19</version>
</dependency>
缺少 `freemarker.jar` 是 Struts2 應用啟動失敗的常見原因之一,補全依賴即可快速恢復。養成查看完整異常堆疊(特別是 `Caused by` 鏈)的習慣,能精準定位缺失類所屬的第三方庫。