LoginSignup
12
18

More than 5 years have passed since last update.

OpenJDK 11 以降で JavaMail が使えない場合の対処法

Posted at

概要

OracleJDK 8 から OpenJDK 11 に変更したところ、JavaMail で以下の例外が発生するようになりメール送信が一切できなくなりました。

java.lang.NoClassDefFoundError: javax/activation/DataSource
   (略)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource

本記事では OpenJDK 11 以降で JavaMail を使うための方法についてご紹介します。

例外発生の原因

JavaMail では内部で java.activation パッケージを使用していますが、OpenJDK 11 以降では JEP 320: Remove the Java EE and CORBA Modules によって以下のパッケージが削除されています。

  • java.xml.ws
  • java.xml.bind
  • java.activation
  • java.xml.ws.annotation
  • java.corba
  • java.transaction

java.activation パッケージが削除されたことにより JavaMail で参照するクラスが見つからなくなり概要で示した例外が発生しています。

対処法

java.activation パッケージとして JavaBeans Activation Framework を使用することで JavaMail が使えるようになります。

Maven
<!-- https://mvnrepository.com/artifact/com.sun.activation/javax.activation -->
<dependency>
    <groupId>com.sun.activation</groupId>
    <artifactId>javax.activation</artifactId>
    <version>1.2.0</version>
</dependency>
Gradle
// https://mvnrepository.com/artifact/com.sun.activation/javax.activation
compile group: 'com.sun.activation', name: 'javax.activation', version: '1.2.0'
12
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
18