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

Apache Tomcat 10.x配置JavaMelody遇启动异常求助

Tomcat 10.0.21配置JavaMelody启动失败问题

问题背景

尝试在Apache Tomcat 10.0.21的全局配置(而非应用内)中部署JavaMelody,使用的依赖包为jrobin-1.5.9.jar和javamelody-core-1.91.0.jar,该配置在Tomcat 9.x中可正常运行,但启动Tomcat 10时出现报错。

全局web.xml配置

<filter>
        <filter-name>javamelody</filter-name>
        <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        <async-supported>true</async-supported>
</filter>
<filter-mapping>
        <filter-name>javamelody</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
        <listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
<login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Monitoring</realm-name>
</login-config>
<security-role>
        <role-name>monitoring</role-name>
</security-role>
<security-constraint>
        <web-resource-collection>
                <web-resource-name>Monitoring</web-resource-name>
                <url-pattern>/monitoring</url-pattern>
        </web-resource-collection>
        <auth-constraint>
                <role-name>monitoring</role-name>
        </auth-constraint>
</security-constraint>

启动错误日志

catalina.out日志

SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors

localhost.log日志

SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Skipped installing application listeners due to previous error(s)
SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [net.bull.javamelody.SessionListener]
        java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionListener
                at java.lang.ClassLoader.defineClass1(Native Method)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
                at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
                at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
                at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
                at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
                at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
                at java.security.AccessController.doPrivileged(Native Method)
        .
        .
        .
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
        Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionListener
                at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
                ... 59 more
SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Skipped installing application listeners due to previous error(s)

环境信息

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (Zulu 8.46.0.52-SA-linux64)

问题疑问

jrobin-1.5.9.jar和javamelody-core-1.91.0.jar是否与当前Java及Tomcat版本存在兼容性问题?如何解决?


问题原因

Tomcat 10.x 基于 Jakarta EE 9 规范,核心变更为Servlet API包名从javax.servlet迁移至jakarta.servlet。你使用的javamelody-core-1.91.0.jar依赖旧版javax.servlet API,因此加载SessionListener时无法找到javax.servlet.http.HttpSessionListener类,触发类加载失败。

解决方案

  1. 升级JavaMelody版本:选择支持Jakarta Servlet API的JavaMelody版本,官方从1.100.0版本开始适配Tomcat 10+(Jakarta EE 9+)。
  2. 替换依赖包:
    • 移除旧的jrobin-1.5.9.jar和javamelody-core-1.91.0.jar
    • 下载最新稳定版javamelody-core-x.x.x.jar,注意从1.100.0版本起,JavaMelody已整合jrobin功能,无需单独引入jrobin包。
  3. 保留原有配置:你在web.xml中的配置无需修改,新版本兼容原有配置格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:21:38