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

Eclipse中Apache Tomcat 10启动失败:子容器异常排查求助

问题排查与解决方案

一、核心错误:java.lang.ClassNotFoundException: javax.el.CompositeELResolver

Tomcat 10基于Jakarta EE 9规范,所有API包名已从javax.*迁移到jakarta.*,出现该错误是因为项目或配置混用了旧的javax规范依赖,按以下步骤排查:

  • 清理依赖冲突:检查项目依赖(Maven的pom.xml或手动引入的jar),移除所有javax.el-api等旧版EL相关依赖,替换为jakarta.el-api(版本需匹配Tomcat 10,如Tomcat 10.1.x对应jakarta.el-api 5.0.x)。
  • 修正Target Runtime配置:右键项目→Properties→Targeted Runtimes,仅勾选Tomcat 10,移除其他旧版容器;同时检查Project Facets,确保Dynamic Web Module版本为4.0+,Java版本与Tomcat使用的JDK一致。
  • 清理部署缓存:在Eclipse的Servers视图中,右键Tomcat实例→Clean;再执行Project→Clean...清理项目编译目录,重新编译部署。
  • 检查Deployment Assembly:右键项目→Properties→Deployment Assembly,确认未包含多余的javax相关jar包,仅部署项目编译输出和符合Jakarta规范的依赖。

二、警告:32位JRE加载64位tcnative-1.dll

该警告由JRE与Tomcat本地库位数不匹配导致,解决方式:

  • 统一JRE位数:确保Eclipse使用的JRE与Tomcat的JDK/JRE位数一致(均为32位或64位)。在Eclipse中通过Window→Preferences→Java→Installed JREs添加对应位数的JDK并设为默认,同时在Tomcat服务器配置(Servers视图→Tomcat实例→Open)中选择该JRE。
  • 替换本地库(可选):若需保留当前JRE位数,可下载对应位数的Tomcat Native Libraries,替换Tomcatbin目录下的tcnative-1.dll,但优先推荐统一JRE位数以避免后续兼容性问题。

额外验证

  • 手动将项目打包为war包,放入Tomcat的webapps目录,启动Tomcat测试。若正常运行,说明问题出在Eclipse配置,需重点检查服务器和项目的Runtime设置。
  • 检查Tomcat的lib目录,确保无旧版javax.el相关jar包混入。

内容的提问来源于stack exchange,提问作者July

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:45:21