JavaMail插件发送邮件报错:ClassNotFoundException: com.sun.mail.util.MailLogger
解决JavaMail发送邮件时
com.sun.mail.util.MailLogger类找不到的问题 嘿,这个问题其实很常见——你现在的依赖配置只拿了JavaMail的API壳子,没装实际干活的实现包!
问题根源
你pom里引入的javax.mail-api只是JavaMail的接口定义,里面没有任何实际运行的代码,而com.sun.mail.util.MailLogger是JavaMail官方参考实现里的类,这个实现包你没加,自然会报ClassNotFound。之前能正常运行大概率是因为其他依赖间接帮你引入了实现包,更新插件后这个传递依赖丢失了,所以现在必须显式声明。
具体修复方案
- 先把你当前的
javax.mail-api依赖删掉,换成完整的JavaMail实现包:<!-- 替换原来的javax.mail-api依赖 --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> <!-- 这个版本完美适配Java 8,和你的环境匹配 --> </dependency> - 另外你的
activation依赖版本太老了,换成和JavaMail匹配的新版本更稳妥:<!-- 替换旧的activation依赖 --> <dependency> <groupId>com.sun.activation</groupId> <artifactId>javax.activation</artifactId> <version>1.2.0</version> </dependency>
额外提醒
如果你的插件是用Maven打包的(比如用shade插件),一定要确认这些依赖被正确打包到最终的jar文件里,避免运行时再次出现类找不到的问题。
内容的提问来源于stack exchange,提问作者Q_Q
相关产品推荐
相关产品推荐

