简体   繁体   中英

nullpointer exception java code

I am trying to make an email client in netbeans to send emails, but i am getting null pointer exception in my code. This is my code (there are three classes):

EmailClient.java

package sendemail;

public class EmailClient extends javax.swing.JFrame {

    SendMail sm=new SendMail();
    Settings set=new Settings();
    public EmailClient() {
        initComponents();
    }


    @SuppressWarnings("unchecked")
    +Generated code                     

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       // TODO add your handling code here:
        sm.setVisible(true);
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        set.setVisible(true);
    }                                          

    public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new EmailClient().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration                   


}

Settings.java

package sendemail;
import javax.swing.*;
import java.awt.*;

public class Settings extends javax.swing.JFrame {

    public String uname;
    public String pass;
    public String smtpserver;
    public String  port;
    /**
     * Creates new form Settings
     */
    public Settings() {
        initComponents();
    }

    public String getUname() {
        return uname;
    }

    public String getPass() {
        return pass;
    }

    public String getSmtpserver() {
        return smtpserver;
    }

    public String getPort() {
        return port;
    }



    @SuppressWarnings("unchecked")
    +Generated Code                   

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
       uname=jTextField1.getText().toString();
        pass=jPasswordField1.getPassword().toString();

        smtpserver=jComboBox1.getSelectedItem().toString();
        port=jComboBox2.getSelectedItem().toString();

        if(uname.equals("") || pass.equals("") || smtpserver.equals("") || port.equals("") )
    {
            JOptionPane.showMessageDialog(this,"All Fields are mandatory");
    }                                        
    else
        {
            setVisible(false);
        }

    }                                        

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    }                                          

    public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Settings().setVisible(false);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
    jTextField1=new JTextField();
}

SendMail.Java

package sendemail;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;
import java.awt.*;
import javax.mail.*;
import javax.mail.MessagingException;


public class SendMail extends javax.swing.JFrame {

    Settings setfrm=new Settings();
    String subject;
    String from;

    public SendMail() {
        initComponents();
    }


    @SuppressWarnings("unchecked")
    +Generated Code                    

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        try
        {
        final String user=setfrm.getUname();
        final String password=setfrm.getPass();
        String portnum=setfrm.getPort();
        String smtpname=setfrm.getSmtpserver();
        String to=jTextField1.getText();
        subject=jTextField2.getText();
        Properties properties=new Properties();
        properties.put("mail.smtp.host",smtpname.toString());
        properties.put("mail.smtp.socketFactory.port",portnum.toString());
        properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        properties.put("mail.smtp.port",portnum.toString());
        properties.put("mail.smtp.auth","true");
        Session session=Session.getDefaultInstance(properties,
           new javax.mail.Authenticator() {
               protected PasswordAuthentication getPasswordAuthentication(){
                return new PasswordAuthentication(user,password);

           }

           }

           );
        MimeMessage message=new MimeMessage(session);
        message.setFrom(new InternetAddress(user));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(jTextField1.getText().toString()));
        message.setSubject(subject);
        message.setText(jTextArea1.getText());
        Transport.send(message);
        JOptionPane.showMessageDialog(null,"message sent");
        }
        catch(MessagingException mex)
        {
            JOptionPane.showMessageDialog(null,mex);
        }
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SendMail().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration                   
    jTextField1=new JTextField();
    jTextField2=new JTextField();
}

I am trying to send Email with SendMail.java while the sender's email and password is entered from Settings.java and the EmailClient.java is just for setting JFrames visibility to true or false on button click..

Error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at sendemail.SendMail.jButton1ActionPerformed(SendMail.java:157)
    at sendemail.SendMail.access$100(SendMail.java:24)
    at sendemail.SendMail$2.actionPerformed(SendMail.java:76)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

jTextField1 is null, you need to initialize it like

JTextField jTextField1 = new JTextField();

I'also see that all the member fields are not initialized properly. You need to ensure all the instance member fields are initialized before any method call is invoked on them

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM