Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.NoClassDefFoundError: javax/mail/Authenticator, whats wrong?

Send to Email.java

package helper;  //Mail.java - smtp sending starttls (ssl) authentication enabled //1.Open a new Java class in netbeans (default package of the project) and name it as "Mail.java" //2.Copy paste the entire code below and save it. //3.Right click on the file name in the left side panel and click "compile" then click "Run"  import javax.mail.*; import javax.mail.internet.*; import java.util.*;  public class sendToEmail {     String  d_email = "[email protected]",      d_password = "mysamplepassword",      d_host = "smtp.gmail.com",      d_port  = "465",      //m_to = "[email protected]",      m_subject = "trial",      m_text = "Hey, this is the testing email.";      public sendToEmail(String strEmailAddress)     {           Properties props = new Properties();         props.put("mail.smtp.user", d_email);         props.put("mail.smtp.host", d_host);         props.put("mail.smtp.port", d_port);         props.put("mail.smtp.starttls.enable","true");         props.put("mail.smtp.auth", "true");         //props.put("mail.smtp.debug", "true");         props.put("mail.smtp.socketFactory.port", d_port);         props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");         props.put("mail.smtp.socketFactory.fallback", "false");          SecurityManager security = System.getSecurityManager();          try         {             Authenticator auth = new SMTPAuthenticator();             Session session = Session.getInstance(props, auth);             //session.setDebug(true);              MimeMessage msg = new MimeMessage(session);             msg.setText(m_text);             msg.setSubject(m_subject);             msg.setFrom(new InternetAddress(d_email));             msg.addRecipient(Message.RecipientType.TO, new InternetAddress(strEmailAddress));             Transport.send(msg);         }         catch (Exception mex)         {             mex.printStackTrace();         }      }      public class SMTPAuthenticator extends javax.mail.Authenticator     {         public PasswordAuthentication getPasswordAuthentication()         {             return new PasswordAuthentication(d_email, d_password);         }     } } 

portion of my controller.java

/* Send to Email will run properly soon */             sendToEmail email = new sendToEmail(strEmailAddress); 

When I run my web application I got this error message saying:

Type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception javax.servlet.ServletException: Servlet execution threw an exception

root cause java.lang.NoClassDefFoundError: javax/mail/Authenticator controller.RegisterTenantController.doPost(RegisterTenantController.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

What will I do now? Can somebody help me to get this web application successful?

like image 874
bluestella Avatar asked Oct 27 '09 10:10

bluestella


People also ask

How do I resolve error in Java Lang NoClassDefFoundError?

lang. NoClassDefFoundError, which means the Class Loader file responsible for dynamically loading classes can not find the . class file. So to remove this error, you should set your classpath to the location where your Class Loader is present.


1 Answers

You need to add two jars into the WEB-INF/lib directory or your webapp (or lib directory of the server):

  • mail.jar - contains the actual smtp implmentation
  • activation.jar - needed by mail.jar
like image 112
David Rabinowitz Avatar answered Sep 26 '22 20:09

David Rabinowitz