Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I'm trying to send an email in java. Here's the 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());
        }

When I compile the project, on line:

Message emailMessage = new MimeMessage(emailSession);

...the following error comes out:

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

Note: I'm using java -version: 9.0.4

like image 225
gabboSonc Avatar asked Feb 12 '18 16:02

gabboSonc


2 Answers

download and add external jakarta.activation-1.2.1.jar Its the Jakarta Activation project.

like image 75
Grzesiek Kapuscinski Avatar answered Nov 08 '22 09:11

Grzesiek Kapuscinski


JDK 9 disables access to many of the javax.* APIs by default, javax activation is now deprecated.

However you can resolve it with adding the module at run time

"--add-modules java.activation".
like image 18
Léo R. Avatar answered Nov 08 '22 07:11

Léo R.