Search code examples
jakarta-mailimapjava-9

Oracle JavaMail IMAP provider not compatible with Java 9?


I get a compile error from maven when building a project under Java 9 that uses the Oracle JavaMail IMAP provider:

... cannot access com.sun.mail.util.ReadableMime
[ERROR]   class file for com.sun.mail.util.ReadableMime not found

(ReadableMime is an interface implemented by IMAPMessage)

It works under Java 8.

The dependencies are:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>javax.mail-api</artifactId>
  <version>1.6.0</version>
</dependency>

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>imap</artifactId>
  <version>1.6.0</version>
</dependency>

Neither javax.mail-api nor imap include a com.sun.mail.util package, but it seems to be no longer part (if it ever officially was) of the JRE.

So, I guess this is a bug in the Oracle imap provider that pops up now in the presence of Jigsaw, or am I missing something?

Interestingly, the Eclipse compiler doesn't complain.


Solution

  • Thanks to EJP:

    com.sun.mail:imap works with com.sun.mail:javax.mail, but not with javax.mail:javax.mail-api.

    The latter does not include the com.sun.mail.util package. com.sun.mail:imap does not declare any Maven dependency, but de facto it has a compile dependency to com.sun.mail:javax.mail.