tomcat的webappclassloader中一个奇怪的异常信息

本文探讨了Tomcat中WebAppClassLoader在启动失败后导致大量ClassNotFoundException的问题。当WebAppClassLoader的started属性被设置为false时,任何进一步的类加载请求都将失败并抛出异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果一个应用抛出大量的Class not found信息,一般你会怀疑包冲突。可是tomcat的webappclassloader却有这样的问题:

如果一个应用发布出现问题, webappclassloader的started属性被设为false.然后其它线程如果继续使用webappclassloader进行class load,则大量的Class not found异常

被抛出:


 1391       public Class loadClass(String name, boolean resolve)
 1392           throws ClassNotFoundException {
 1393  
 1394           synchronized (name.intern()) {
 1395               if (log.isDebugEnabled())
 1396                   log.debug("loadClass(" + name + ", " + resolve + ")");
 1397               Class clazz = null;
 1398       
 1399               // Log access to stopped classloader
 1400               if (!started) {
 1401                   try {
 1402                       throw new IllegalStateException();
 1403                   } catch (IllegalStateException e) {
 1404                       log.info(sm.getString("webappClassLoader.stopped", name), e);
 1405                   }
 1406               }

                        ...................................................................

 1516               throw new ClassNotFoundException(name);
 1517           }
 1518       }

所以如果有大量的ClassNotFoundException的话先搜索一下是否有webappClassLoader.stopped关键字吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值