java.lang.NoClassDefFoundError com.sun.mail.util.MessageRemovedIOException

本文探讨了在使用JavaMail API时遇到的NoClassDefFoundError错误,详细解释了问题产生的原因,并提供了两种有效的解决方案:一是移除javaee.jar,二是调整jar包加载顺序。

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

java.lang.NoClassDefFoundError com.sun.mail.util.MessageRemovedIOException

 

         The javaee.jar contains the JavaMail API. The mail.jar and activation.jar are no longer needed to compile the project. BUT: The javaee.jar does not contain all the implementation classes needed to run the application!

 

       javaee.jar也实现了发送邮件的接口(好像只实现了部分接口),tocmat加载的classes文件的时候先把javaee.jar中的classes文件加载到jvm中,由ClassLoader的加载机制(双亲委托)可以知道,mail.jar中相应的classes文件是不能被加载进来的。所以会出现问题。

      tomcat加载classes文件的顺序

 

       第一种解决方式

       在mail.jar和 javaee.jar中其实都没有MessageRemovedIOException这个类;直接把javaee.jar删掉即可,这种方式我试过管用。

 

        第二种解决方式
        把mail.jar 放到javaee.jar的前面就可以了,前提是tomcat在eclipse或者Myeclipse里面启动。
        MyEclipse--》properties--》 Java Build Patch--》 Order and Export ;
        选中mail.jar 点击up按钮即可

      

        但是如果tomcat在外面启动(不再eclipse或者Myeclipse里面启动)还会有问题。因为在web-inf/lib目录下javaee.jar还是在mail.jar前面。想办法把mail.jar放到javaee.jar前面即可。比如重命名一下....
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值