web-dev-qa-db-fra.com

Eclipse: Java.lang.NoClassDefFoundError: javax / activation / DataHandler

J'essaie d'envoyer un e-mail en Java. Voici le code:

String mailSmtpHost = "smtp.example.com";
String mailTo = "[email protected]";
        String mailFrom = "[email protected]";
        String mailSubject = "Email subject";
        String mailText = "Some text";
        Properties properties = new Properties();
        properties.put("mail.smtp.Host", mailSmtpHost);
        Session emailSession = Session.getDefaultInstance(properties);
try {
            Message emailMessage = new MimeMessage(emailSession);
            emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
            emailMessage.setFrom(new InternetAddress(mailFrom));
            emailMessage.setSubject(mailSubject);
            emailMessage.setText(mailText);
            emailSession.setDebug(true);
            Transport.send(emailMessage);
        }catch(Exception e) {
            System.out.println("Errore email: "+e.toString());
        }

Lorsque je compile le projet, en ligne:

Message emailMessage = new MimeMessage(emailSession);

... l'erreur suivante apparaît:

Exception in thread "main" Java.lang.NoClassDefFoundError: javax/activation/DataHandler

Remarque: j'utilise Java -version: 9.0.4

7
gabboSonc

JDK 9 a désactivé l'accès à de nombreuses API javaee. * Par défaut, l'activation javax est désormais déconseillée.

Cependant, vous pouvez le résoudre en ajoutant le module au moment de l'exécution

"--add-modules Java.activation".
14
Léo R.