NoClassDefFoundError:javax/activation/DataSource

Rav*_*ran 17 java jakarta-mail

这是代码:

      Session session = Session.getDefaultInstance(props, null);
      Store store = session.getStore("imaps");
      store.connect("imap.gmail.com", "****@gmail.com", "****");
      System.out.println(store);
      Folder folder = store.getDefaultFolder();
      folder = folder.getFolder("INBOX");
      folder.open(Folder.READ_ONLY);

      System.out.println("Message Count: "+folder.getMessageCount());
      System.out.println("Unread Message Count: "+folder.getUnreadMessageCount());


           Message[] messages = folder.getMessages();  --> here the code stops.

      FetchProfile fp = new FetchProfile();
      fp.add(FetchProfile.Item.ENVELOPE);
      folder.fetch(messages, fp);

      for (int i = 0; i< messages.length; i++) 
      { 
          System.out.println("From:"+ messages[i].getFrom()); 
          }
Run Code Online (Sandbox Code Playgroud)

代码给出了以下的摘要并在显示的位置停止.

线程"main"中的异常java.lang.NoClassDefFoundError:com.google.code.com中的com.google.code.com.sun.mail.imap.MessageCache.getMessage(MessageCache.java:129)中的javax/activation/DataSource openReports.OpenReports.main中的.sun.mail.imap.IMAPFolder.getMessage(IMAPFolder.java:1394)

jed*_*diz 17

如果你使用maven,你可以手动添加

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Rav*_*ran 5

我在buildpath中添加了activation.jar,问题就解决了。

所以我使用了 2 个 jars java-mail-ima.** .jar, activation.jar(用于进一步引用)。

  • 请注意,从 Java 9 开始,这再次被删除。升级到 JDK 9 或更高版本后,您将再次收到相同的错误。 (17认同)
  • 请注意,`javax.activation` 包含在 JDK 6 中,因此如果您使用较新的 JDK,则不需要激活 jar。 (2认同)