【问题标题】:Jakarta Mail with OpenJDK 11: java.util.ServiceConfigurationError: jakarta.mail.Provider: Provider com.sun.mail.imap.IMAPProvider not a subtype带有 OpenJDK 11 的 Jakarta Mail:java.util.ServiceConfigurationError: jakarta.mail.Provider: Provider com.sun.mail.imap.IMAPProvider not a subtype
【发布时间】:2021-03-23 21:14:46
【问题描述】:

我正在从 java 8 迁移到 openjdk-11。现在邮件(使用 smtp 发送电子邮件)不再起作用。该项目在Win10上使用openjdki 11和jakarta.mail-2.0.0。后来我添加了 jakarta.activation-api-2.0.0。

    Properties props = new Properties();
    props.put("mail.smtp.host", host);

    Session session = Session.getInstance(props);
    session.setDebug(debug);

    try {
        // create a message
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        message.setSubject("Jakarta Mail API Test");
        message.setSentDate(new Date());

        MimeBodyPart mbp1 = new MimeBodyPart();
        mbp1.setText("This is a message body.\nHere's line two.");
        MimeBodyPart mbp2 = new MimeBodyPart();
        mbp2.setText("This is the text in the message attachment.", "us-ascii");
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(mbp1);
        message.setContent(mp);
        Transport.send(message);
    } catch (MessagingException mex) {
        mex.printStackTrace();
        Exception ex = null;
        if ((ex = mex.getNextException()) != null) {
            ex.printStackTrace();
        }
    }

代码编译,但它们不运行:

Exception in thread "main" java.util.ServiceConfigurationError: jakarta.mail.Provider: Provider com.sun.mail.imap.IMAPProvider not a subtype
at java.util.ServiceLoader.fail(ServiceLoader.java:239)
at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at jakarta.mail.Session.loadProviders(Session.java:964)
at jakarta.mail.Session.<init>(Session.java:254)
at jakarta.mail.Session.getInstance(Session.java:281)
at test.transport.main(transport.java:51)
C:\Users\<user>\Documents\NetbeansProjects12.0\AC99_Benutzer\nbproject\build-impl.xml:1370: The following error occurred while executing this line:
C:\Users\<user>\Documents\NetbeansProjects12.0\AC99_Benutzer\nbproject\build-impl.xml:993: Java returned: 1
BUILD FAILED (total time: 0 seconds)

【问题讨论】:

标签: jakarta-mail openjdk-11


【解决方案1】:

根据Jakarta Mail home page:Artfact jakarta.mail 是实现,jakarta.mail-api 只能用于编译。仅与 provided 依赖范围一起使用。

使用上面的链接并下载jakarta.mail.jar。删除jakarta.mail-api.jar。添加jakarta.mail.jar

【讨论】:

  • @Jaja 在问题中包含你的 maven pom。
  • 我使用的不是 maven pom,而是 Netbeans 库管理
猜你喜欢
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 2019-05-19
  • 2023-02-17
  • 2022-11-22
  • 2021-02-21
  • 2020-04-12
  • 2021-10-22
相关资源
最近更新 更多