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

25.2k Views Asked by At

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

3

There are 3 best solutions below

6
Léo R. On BEST ANSWER

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".
1
Grzesiek Kapuscinski On

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

0
Imad On

I got the same error trying do deploy my jar application in a remote server. In my case i had to download and add to my project the javax.activation library.

Make sure that you got the correct reference of javac.mail and javax.activation library inside your project.properties file before generate the .JAR

Project.properties