java - 使用 JavaMail 时避免 NoClassDefFoundError

标签 java jakarta-mail noclassdeffounderror

我不断收到 NoClassDefFoundError 错误。我尝试使用 JavaMail API 发送电子邮件,但是当我使用 SMTPMessage 类创建 Message 实例时发生错误。

我知道我需要激活库,但它仍然不起作用。

顺便说一下,我使用的是 JDK 10。

错误发生在这段代码的第一行。

@Override
public 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/DataSource
at martin.mail.EmailHandler.sendEmail(EmailHandler.java:79)
at martin.Main.main(Main.java:22)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
at 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

最佳答案

解决方案

只需将激活库添加到您自己的类路径中即可。您可以将其放入您自己的包中。

关于java - 使用 JavaMail 时避免 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51808044/

相关文章:

java - 如何使用 maven 下载 JavaMail (mail.jar) 和 JAF (activation.jar)

maven - 运行使用 maven 构建的 jar 时的 FlinkMLTools NoClassDef

android - 低于 Lollipop 的 Android 版本上的 java.lang.NoClassDefFoundError

java - 一个 @Async 方法中使用的线程池与其他异步方法执行共享

java - 使用JDT远程控制Eclipse Debug

java - 类序列化帮助(org.omg.CORBA.MARSHAL : WARNUNG: IOP00810011: Exception. .. 错误)

java - 开源 XPath Filter 2.0 实现

java邮件作为pdf文件作为附件

java - 提取JSP页面内容

java - BouncyCaSTLe 类上的 NoClassDefFoundError