Après être passé d'OracleJDK 8 à OpenJDK 11, JavaMail lève désormais l'exception suivante et ne peut plus envoyer de courrier du tout.
java.lang.NoClassDefFoundError: javax/activation/DataSource
   (Abréviation)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
Cet article vous montrera comment utiliser JavaMail avec OpenJDK 11 et supérieur.
JavaMail utilise le package java.activation en interne, mais dans OpenJDK 11 et versions ultérieures, JEP 320: Remove the Java EE and CORBA Modules Le package a été supprimé.
En raison de la suppression du package java.activation, la classe référencée par JavaMail est introuvable et l'exception indiquée dans l'aperçu se produit.
Vous pouvez utiliser JavaMail en utilisant JavaBeans Activation Framework (https://mvnrepository.com/artifact/com.sun.activation/javax.activation) comme package java.activation.
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'
        Recommended Posts