java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass...
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:433)
at web.ActionServlet.service(ActionServlet.java:48)
BeanUtils 內部依賴 LogFactory,項目未引入 commons-logging 依賴。/friend2 可能與部署名稱不一致,導致資源加載失敗。<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version> <!-- 或兼容版本 -->
</dependency>
確保以下 jar 存在(非 Maven 項目手動放入):
friend2。<Context path="/friend2" ...> 配置。servlet-mapping 的 url-pattern 正確。ActionServlet
→ BeanUtils.populate()
→ BeanUtilsBean.getInstance()
→ ConvertUtilsBean()
→ LogFactory.getLog() ← 缺少 commons-logging
→ ClassNotFoundException
| 問題 | 解決 |
|---|---|
| 手動管理 jar 包 | 改用 Maven/Gradle 自動傳遞依賴 |
| 版本衝突 | 統一使用 dependencyManagement 鎖定版本 |
| 部署路徑不一致 | IDE 部署名與項目 context-root 保持一致 |
| 缺少傳遞依賴 | mvn dependency:tree 排查缺失節點 |
ClassNotFoundException: org.apache.commons.logging.LogFactory 確定缺少 jar。commons-logging 依賴並重新部署。/friend2 路徑映射是否正確。work 目錄並重啟。