为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JavaMail 时避免 NoClassDefFoundError

使用 JavaMail 时避免 NoClassDefFoundError

繁华开满天机 2021-06-29 08:10:31
我不断收到 NoClassDefFoundError 错误。我正在尝试使用 JavaMail API 发送电子邮件,但是当我使用 SMTPMessage 类创建 Message 实例时发生错误。我知道我需要激活库,但它仍然不起作用。顺便说一下,我使用的是 JDK 10。错误发生在此代码的第一行。@Overridepublic void sendEmail(Mail mail) throws MessagingException{    Message message = new SMTPMessage(this.session);    message.setSubject(mail.getHeader());    message.setFrom(mail.getFrom());    message.setSentDate(mail.getDateClone());    if (mail.getSignature() != null)        message.setText(mail.getText() + "\n\n" + mail.getSignature());    else        message.setText(mail.getText());    Transport.send(message);}堆栈跟踪Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSourceat martin.mail.EmailHandler.sendEmail(EmailHandler.java:79)at martin.Main.main(Main.java:22)Caused by: java.lang.ClassNotFoundException: javax.activation.DataSourceat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)... 2 more
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

默认情况下,JDK 9 禁用对许多 javax.* API 的访问。您需要添加命令行选项 --add-modules java.activation 以启用对 javax.activation API 的访问。


查看完整回答
反对 回复 2021-07-14
?
慕少森

TA贡献2019条经验 获得超9个赞

解决方案

只需将激活库添加到您自己的类路径中即可。你可以把它放在你自己的包里。



查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 278 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信