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

Tomcat重启报Illegal access错误无法加载类,有什么其他解决方法?

Tomcat 重启类加载异常解决方案

该报错本质是Web应用实例已经停止后,仍有残留线程尝试通过已销毁的Webapp类加载器加载类,通常是应用资源未完全释放导致的,除已尝试的操作外,其余可行解决方案如下:

  • 清理Tomcat残留缓存:停止Tomcat进程后,删除work/Catalina/localhost下对应expert项目的缓存目录,同时清空temp目录下的所有临时文件,再重新启动Tomcat即可解决旧类缓存冲突的问题。
  • 主动释放应用自定义线程资源:检查项目内的自定义异步线程池、定时任务、消息消费线程等资源,确保在Spring容器销毁时会主动关闭这些线程。Spring项目可以通过@PreDestroy注解编写销毁逻辑,手动调用线程池的shutdown()方法、停止定时任务,避免残留线程持有旧类加载器的引用。
  • 调整JDBC驱动放置路径:如果项目WEB-INF/lib目录下存放了JDBC驱动包,Tomcat停止时驱动无法正常注销会残留类加载器引用,建议将JDBC驱动包移动到Tomcat全局的lib目录下,也可以在容器销毁逻辑中主动调用DriverManager.deregisterDriver()方法注销对应驱动。
  • 关闭Tomcat自动部署功能:除了已配置的reloadable="false",还需要在Host配置项中把autoDeploy设置为false,避免Tomcat自动检测应用文件变化触发不必要的重载,调整后的Context配置如下:
<Context path="/expert" docBase="expert" debug="0" reloadable="false" autoDeploy="false">
  • 调大JVM元空间参数:如果JVM的元空间(JDK8之前为永久代)配置过小,类加载过多无法正常卸载也会触发该异常,可以适当调大JVM启动参数中的-XX:MaxMetaspaceSize值,比如设置为-XX:MaxMetaspaceSize=512m。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:57:01