You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重装Eclipse后Tomcat部署WAR包遇HTTP 404及Struts2过滤器启动失败求助

重装Eclipse后Tomcat部署WAR包遇HTTP 404及Struts2过滤器启动失败求助

看起来你遇到了一个典型的依赖异常导致应用启动失败的问题,咱们先从日志里的核心错误入手分析:

从你贴出的日志来看,根本原因是log4j的初始化失败,进而导致Struts2过滤器无法启动,最终Web应用上下文加载失败——这就是为什么你会看到HTTP 404(因为Tomcat里根本没有成功部署这个/test_app/应用)。

核心错误拆解

日志里的关键报错链:

SEVERE: Exception starting filter [struts2]
java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.util.PropertiesUtil
...
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchMethodError: org.osgi.framework.FrameworkUtil.getBundle(Ljava/lang/Class;)Lorg/osgi/framework/Bundle;

这说明你的项目依赖中,OSGI相关的jar包要么缺失,要么版本和log4j所需的不兼容,导致log4j无法完成初始化,直接阻断了Struts2过滤器的启动流程。

具体解决方案建议

  • 检查WAR包的依赖完整性
    把你部署的WAR包解压,查看WEB-INF/lib目录:

    • 确认存在完整的log4j 2.x相关jar包(比如log4j-api.jar、log4j-core.jar,两个版本要完全一致)
    • 确认包含兼容的OSGI核心jar包(比如org.osgi.core.jar,建议版本4.3及以上,要和log4j版本匹配)
  • 修复Eclipse的构建与部署配置
    重装Eclipse后,项目的部署配置很容易被重置:

    1. 右键项目 → 「Properties」→「Java Build Path」:检查「Libraries」标签下所有依赖都正常(无红色感叹号),如果有缺失的依赖,重新引入正确版本。
    2. 进入「Deployment Assembly」配置:确保所有需要的依赖jar都被设置为部署到WEB-INF/lib目录,没有遗漏。
  • 清理缓存并重建项目

    1. 先清理Tomcat的缓存:找到Tomcat安装目录下的work和temp文件夹,删除所有内容,避免旧的缓存文件干扰。
    2. 在Eclipse中执行「Project」→「Clean...」,选中你的项目清理后,重新导出WAR包部署。
  • 排查依赖版本冲突
    如果项目中引入了多个版本的OSGI或log4j相关jar,会引发类加载冲突:
    可以用Eclipse的「Dependency Hierarchy」功能(在Java Build Path的Libraries里,选中某个jar右键→「Open Dependency Hierarchy」),查看是否有重复或版本冲突的依赖,排除掉冗余的版本。

  • 验证log4j配置文件
    确认WEB-INF/classes目录下有正确的log4j配置文件(比如log4j2.xml),且配置没有语法错误——配置文件出错也可能导致log4j初始化失败。

只要解决了log4j和OSGI依赖的问题,Struts2过滤器就能正常启动,Web应用也会成功部署,404的问题自然就消失了。

备注:内容来源于stack exchange,提问作者Dr Aditya Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:14:31