Java通过SMTP发邮件报NoClassDefFoundError: javax/mail/MessagingException问题
Java邮件发送NoClassDefFoundError报错解决方案
报错根因
java.lang.NoClassDefFoundError: javax/mail/MessagingException 报错是运行时类路径未成功加载mail.jar、activation.jar依赖导致的,编译时引入依赖只能保证编译通过,运行时未将依赖加载到类路径就会触发该问题。
对应解决方法
如果你是本地直接通过
java命令运行testmail类
运行命令需要显式指定包含两个依赖包的类路径,示例如下:# Linux/Mac 环境 java -cp .:mail.jar:activation.jar testmail # Windows 环境(分隔符换为分号) java -cp .;mail.jar;activation.jar testmail其中
.代表加载当前目录下你自己编写的编译后class文件,后面的jar包如果不在当前目录需要补全完整文件路径。如果你是将代码部署到Tomcat 9中运行
需要将mail.jar和activation.jar两个依赖包放入Web项目的WEB-INF/lib目录下;如果有多个项目需要使用该依赖,也可以放入Tomcat安装根目录的lib文件夹中,放置完成后重启Tomcat即可。
额外注意事项
- 若你使用的JDK版本≥9,
javax.activation模块已从默认JDK中移除,可在运行命令中添加--add-modules java.activation参数,或更换为更新的Jakarta Mail依赖包替代旧版JavaMail。 - 检查你下载的
mail.jar和activation.jar是否完整,避免下载到损坏的依赖包导致类加载失败。
内容的提问来源于stack exchange,提问作者Aryan Malpani
相关产品推荐
相关产品推荐

