为什么这个简单的小程序会报出空指针异常,很无语

时间:2022-06-30 20:35:18
为什么这个简单的小程序会报出空指针异常,很无语


import java.util.Date;
import java.util.Timer;

import com.gw.mail.MailTest;

public class test {

public void start(){
Date datetime = new Date();
Timer timer = null;
System.out.println(datetime);
timer.schedule(new MailTest(), datetime);
}


public static void main(String[] args) {
test t = new test();
t.start();
}

}



报出的异常为:

Mon Apr 04 11:59:43 CST 2011
Exception in thread "main" java.lang.NullPointerException
at test.start(test.java:12)
at test.main(test.java:18)


at test.start(test.java:12)这里指的是timer.schedule(new MailTest(), datetime);

MailTest类得代码为:

package com.gw.mail;

//这是执行任务的类,即每隔一段时间要做的事情在这里  

import java.io.IOException;
import java.net.UnknownHostException;
import java.util.TimerTask;
public class MailTest extends TimerTask {  
   @Override  
   public void run() {
MailMessage message = new MailMessage();
message.setFrom("xXX_j@163.com"); // 发送者
message.setTo("xXX@qq.com"); // 收件者
String server = "smtp.163.com"; // 发件者邮箱服务器
message.setSubject("Java Mail Test"); // title
message.setContent("Hello, this is GWVM system send mail test"); // content
message.setDataFrom("xX");  // 收到的邮件中发件人显示
message.setDataTo("xX");  // 收到的邮件中收件人显示
message.setUser("XXX_j@163.com");  // 发件箱的用户名
message.setPassword("XXX");  // 发件箱的密码

SMTPClient smtp;
try {
smtp = new SMTPClient(server, 25);
boolean flag;
flag = smtp.sendMail(message, server);
if (flag) {
System.out.println("邮件发送成功!");
} else {
System.out.println("邮件发送失败!");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


}  
}  

8 个解决方案

#1


求解,看了N久没发现有什么问题~

#2


timer timer = null,再调用的时候肯定是空指针了。

#3


        Timer timer = null;
没有初始化

Timer timer = new Timer();

#4


  Timer timer = null;为空
然后  timer.schedule(new MailTest(), datetime);
有没有初始化?

#5


初始化确实是一个很重要的环节,上次我也遇到了一个空指针异常的错误,弄了两个小时,才发现这个问题,太诡异了

#6


谢谢大家了,这个问题搞了N久,没想到是这个环节出了问题

#7


Timer timer = null;

Timer没有初始化啊,后面调用它就会报空指针错了...

#8


没有初始化,你使用它肯定会报NullPointerException,以后小心啊

#1


求解,看了N久没发现有什么问题~

#2


timer timer = null,再调用的时候肯定是空指针了。

#3


        Timer timer = null;
没有初始化

Timer timer = new Timer();

#4


  Timer timer = null;为空
然后  timer.schedule(new MailTest(), datetime);
有没有初始化?

#5


初始化确实是一个很重要的环节,上次我也遇到了一个空指针异常的错误,弄了两个小时,才发现这个问题,太诡异了

#6


谢谢大家了,这个问题搞了N久,没想到是这个环节出了问题

#7


Timer timer = null;

Timer没有初始化啊,后面调用它就会报空指针错了...

#8


没有初始化,你使用它肯定会报NullPointerException,以后小心啊