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

启动Apache Tomcat 9时遭遇org.apache.catalina.LifecycleException异常求助

解决方案

核心原因

重装系统后JDK/Tomcat的类加载逻辑或注解扫描范围发生变化,导致BouncyCastle库中org.bouncycastle.asn1.ASN1Boolean与DERBoolean的循环继承关系在注解扫描时被触发,引发StackOverflowError。

可行解决方法(无需移除/更新BC库)

1. 跳过BC库的注解扫描

修改Tomcat配置文件conf/catalina.properties,找到tomcat.util.scan.DefaultJarScanner.jarsToSkip配置项,将BouncyCastle相关jar包加入跳过列表:

tomcat.util.scan.DefaultJarScanner.jarsToSkip=..., bcprov-jdk15on-*.jar, bcpkix-jdk15on-*.jar

(注:请根据实际项目中BC jar的名称调整,确保覆盖所有相关包)

2. 限制Web应用的注解扫描范围

在目标应用/gol的WEB-INF/web.xml中添加<absolute-ordering/>标签,强制Tomcat仅扫描当前应用的类,不扫描依赖库的注解:

<web-app ...>
    <absolute-ordering/>
    <!-- 其他原有配置 -->
</web-app>

3. 调整类加载优先级

将BouncyCastle的jar包复制到JDK的jre/lib/ext目录下,让JDK扩展类加载器优先加载BC类,避免应用类加载器重复加载引发循环继承问题。操作前请备份ext目录原有文件,防止冲突。

4. 配置Tomcat类加载委托模式

在Tomcat的conf/context.xml中,为/gol应用添加类加载器配置,开启父类加载器委托优先:

<Context path="/gol">
    <Loader delegate="true"/>
</Context>

验证

完成配置后重启Tomcat,检查启动日志是否消除StackOverflowError,确认/gol应用正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:27:42