Que faire si JavaMail ne peut pas être utilisé avec OpenJDK 11 ou version ultérieure

Aperçu

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.

Cause d'exception

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.

approche

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

Que faire si JavaMail ne peut pas être utilisé avec OpenJDK 11 ou version ultérieure
Que faire si la commande adb ne peut pas être exécutée
Que faire lorsque CentOS ne peut pas être démarré avec VirtualBox sur Catalina
Que faire si le chargement de l'URL SPA ne peut pas être détecté par WebView shouldOverrideUrlLoading
Que faire si le serveur rails ne peut pas être arrêté
Que faire si la construction échoue avec l'erreur «Le module compilé avec Swift x.x.x ne peut pas être importé par le compilateur Swift x.x.x»
Que faire si vous ne pouvez pas exécuter avec la commande "nom du package Java / nom de la classe"
[Java] [Spring] Que faire si vous ne pouvez pas utiliser Autowire avec une discordance de type après avoir annoté Spring Security
Que faire lorsque la validation ne fonctionne pas avec l'action de mise à jour
Que faire si vous vous fâchez contre OpenSSL avec Pyenv Install
[Rails] Que faire si vous ne pouvez pas obtenir de paramètres avec form_with
Que faire à propos de l'erreur "Impossible de lire ou n'est pas un fichier ZIP valide"
Que faire si vous obtenez Impossible de localiser le répertoire Gemfile ou .bundle /
Que faire si le serveur Tomcat meurt
Que faire si vous transmettez des informations incorrectes
Que faire si l'archétype mvn: générer échoue
[Ubuntu] Que faire lorsque MongoDB ne peut pas être démarré en raison d'une erreur SocketException
[React.useRef] Que faire lorsque le dernier état ne peut pas être référencé dans l'écouteur d'événements
Que faire si l'annotation JSON Hint ne fonctionne pas avec Lombok et JSONIC
Que faire lorsque Android Studio indique que "votre processeur ne prend pas en charge vt-x ou svm"
Que faire si l'installation du gem de débogage échoue
Que faire si le serveur Rails ne peut pas démarrer
Que faire si une exception ClassNotFoundException se produit lors du démarrage de Tomcat
Que faire si TextToSpeech ne fonctionne pas sur Android 11
Que faire si vous créez accidentellement un modèle
Que faire si une erreur ActionController :: UnknownFormat se produit
Que faire si le référentiel Git ne peut pas être affiché dans Azure Team Explorer pour Eclipse
Que faire si vous modifiez l'adresse d'écoute à partir de l'écran des paramètres dans le menu fixe Mattermost
SpringBoot 2.3.0 ou version ultérieure ne parvient pas à résoudre l'espace réservé utilisé pour la valeur de @PropertySource
Que faire si vous avez installé Ruby avec rbenv mais que la version ne change pas
[Rails] Que faire si vous ne pouvez pas obtenir de message d'erreur avec la méthode des erreurs
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Que faire si FacesMessage est défini mais pas affiché
Que faire lorsque vous ne pouvez pas appliquer d'opérateurs d'expression à la liaison de méthode
Que faire si mysql2 obtient une erreur d'installation de bundle
Que faire si la commande rails devient inutilisable
Remarques sur la marche à suivre si l'installation d'Ubuntu 20.04 sur Virtual Box 6.1 (Windows10) échoue avec «Erreur 5 Erreur d'entrée / sortie»
Que faire si Intel RST (technologie de stockage rapide) interfère avec le double démarrage d'Ubuntu20.04LTS et Windows10
Que faire si une erreur d'authentification de clé SSH se produit lors du déploiement automatique sur EC2 avec Capistrano
Que faire si l'application n'est pas créée avec la dernière version de Rails installée lorsque les rails sont neufs
Parce que getSupportLoaderManager ne peut pas être utilisé
[Ubuntu 20.04] Que faire si le moniteur externe n'est pas reconnu
Que faire si vous obtenez une erreur gcc dans Docker
[Rails] Que faire si les données ne sont pas enregistrées dans la base de données
Que faire si la page Rails n'est pas affichée dans le didacticiel Rails 1.3.2
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
Remarques sur la marche à suivre si le Jar de dépendance Eclipse Maven est incorrect
[Rails] Que faire lorsque les rails ne répondent pas ou ne s'arrêtent pas
java.security.InvalidKeyException: Que faire en cas de taille de clé ou de paramètres par défaut illégaux
[Logback] Que faire si les fichiers inutiles ne disparaissent pas pendant la rotation
Que faire si vous oubliez votre mot de passe root sur CentOS7