我在 intellij 的 javax.mail.MimeMessage 处收到 NoClassDefFoundError

I'm getting NoClassDefFoundError at javax.mail.MimeMessage in intellij

我最近从网站 https://javaee.github.io/javamail/

下载了 javax.mail

我正在使用 IntelliJ 作为我的 java IDE 并且我添加了 YouTube 视频中显示的 jar 文件。 IntelliJ 也没有显示任何错误[我的意思是 jar 添加成功]。

我输入了在 YouTube 上看到的示例程序。

我输入的程序如下。

package com.company;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailTest {
    public static void main(String[] args) {
        final String username="username";
        final String password="password";
        final String from="from@gmail.com";
        final String to="to@gmail.com";
        Properties properties=new Properties();
        properties.put("mail.smtp.auth","true");
        properties.put("mail.smtp.starttls.enable","true");
        properties.put("mail.smtp.host","smtp.gmail.com");
        properties.put("mail.smtp.port","587");
        Session session=Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username,password);
            }
        });
        MimeMessage msg=new MimeMessage(session);
        try {
            msg.setFrom(new InternetAddress(from));
            msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
            msg.setSubject("Message from JAVA");
            msg.setText("Sample body");
/*
            Multipart multipart=new MimeMultipart();
            MimeBodyPart mimeBodyPart=new MimeBodyPart();
            mimeBodyPart.setText("Please open the file attached below");
            MimeBodyPart attachment=new MimeBodyPart();
            attachment.attachFile("test.txt");
            multipart.addBodyPart(mimeBodyPart);
            multipart.addBodyPart(attachment);
            msg.setContent(multipart);
*/
            Transport.send(msg);
            System.out.println("Mail sent successfully");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

代码与我在 YouTube 上看到的相同,IDE 也没有显示错误。但是,当我 运行 代码时,我希望它 运行 与 YouTuber 的 运行 一样。

但是我在这行的第 30 行得到了 NoClassDefFoundError。

MimeMessage msg=new MimeMessage(session);

我现在不知道该怎么办? 谁能帮我解决这个问题...

这是我下面的错误

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler
    at com.company.MailTest.main(MailTest.java:30)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    ... 1 more

Process finished with exit code 1


你必须下载javax.activation jar