I have checked the program, the code is working on one system but when I migrate this file to my other system I get the below error, I want to know why this is happening and how could I troubleshoot this issue? My credentials are correct
package javaapplication6;  
import java.util.Properties;    
import javax.mail.*;
import javax.mail.internet.*;    
class Mailer{  
    public static void send(String from,String password,String to,String sub,String msg){  
          //Get properties object    
          Properties props = new Properties();    
          props.put("mail.smtp.host", "smtp.gmail.com");    
          props.put("mail.smtp.socketFactory.port", "465"); 
          props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
          props.put("mail.smtp.auth", "true");    
          props.put("mail.smtp.port", "465");
          //get Session
          Session session = Session.getDefaultInstance(props,    
           new javax.mail.Authenticator() {    
           protected PasswordAuthentication getPasswordAuthentication() {    
           return new PasswordAuthentication("XXXX@gmail.com","XXXXXXXXX");  
           }    
          });    
          //compose message    
          try {    
           MimeMessage message = new MimeMessage(session);    
           message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));    
           message.setSubject(sub);    
           message.setText(msg);    
           //send message  
           Transport.send(message);    
           System.out.println("message sent successfully");    
          } catch (MessagingException e) {throw new RuntimeException(e);}    
    }  
}  
public class SendEmail{    
 public static void main(String[] args) {    
     //from,password,to,subject,message  
     Mailer.send("XXXX@gmail.com","XXXXXXXXX","itkrishcommerce@gmail.com","hello javatpoint","How r u?");  
     //change from, password and to  
 }    
}
The exception I am getting:
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at javaapplication6.Mailer.send(SendEmail.java:32) at javaapplication6.SendEmail.main(SendEmail.java:39)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
 
    