Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析日期时的java.lang.NullPointerException_Java_Web Services_Hibernate - Fatal编程技术网

解析日期时的java.lang.NullPointerException

解析日期时的java.lang.NullPointerException,java,web-services,hibernate,Java,Web Services,Hibernate,从我的rest客户端发送请求时出现异常 这是我的DTO课 private String fromDate; private String toDate; public String getFromDate() { return fromDate; } public void setFromDate(String fromDate) { this.fromDate =

从我的rest客户端发送请求时出现异常
这是我的DTO课

        private String fromDate;
        private String toDate;

        public String getFromDate() {
            return fromDate;
        }
        public void setFromDate(String fromDate) {
            this.fromDate = fromDate;
        }
        public String getToDate() {
            return toDate;
        }
        public void setToDate(String toDate) {
            this.toDate = toDate;
        }
请求数据包是这种格式,如何以这种格式发送日期,但它将作为字符串

{
" toDate": "2014/07/01",
  " fromDate ": "2014/05/01",
  " imeiNo ": "1234567890",
  " phoneNumber ": 1234567890,
  " emailId ": ""
}
下面是我在helper类中转换的方法

private static Timestamp convertStringDateToTimestamp(String stringDate)
    {

        DateFormat formatter;
        Date date = null;
        formatter = new SimpleDateFormat("yy-MM-dd");
        try {
            date = (Date) formatter.parse(stringDate);
        } 
        catch (ParseException e) {

            e.printStackTrace();
        }
        java.sql.Timestamp timeStamp = new Timestamp(date.getTime());

        return timeStamp;
    }
但是在我的服务器中获取此异常

java.lang.NullPointerException at org.omnypay.mobileapp.webservices.helper.TransactionHelper.convertStringDateToTimestamp(Tra

请帮助我

如果格式化程序没有将字符串解析为日期,
date
变量为
null
,您无法调用
date.getTime()

在该行之前添加空检查


正如Jon所说,您需要更好地处理异常。打印stacktrace后抛出异常,或者返回一个值,以便程序不会继续执行方法的其余部分。

您的日期将
/
作为分隔符,但您正在格式化程序中将
-
定义为分隔符。而且你有一整年的时间,比如2014年,而不是14年

formatter = new SimpleDateFormat("yyyy/MM/dd");

除非你指出代码中的行,否则所有的工作都是为了猜测,然而,这
java.sql.Timestamp Timestamp=新的时间戳(date.getTime())
。。。这是一个潜在的问题。如果由于某种原因,
字符串
未能被解析,那么
日期
仍将是
您可能首先得到了一个
解析异常
,实际上您忽略了它。不要那样做。如果您得到一个
ParseException
,显然无法继续,那么为什么您只是打印堆栈跟踪并忽略它呢?您使用的格式,
yy-MM-dd
和日期
字符串的格式是错误的
2014/07/01
,格式应该更像
yyyy/MM/dd
,这将导致
ParseException
date
null
。您需要将调试语句添加到代码中…Date=null;在这种情况下,我必须采取什么,因为我是新的this@JonSkeet当然,假设他想在那里中断。我不确定在这种情况下“中断”是什么意思,但是让异常冒泡出来,或者在
catch
块中返回适当的值,都可以避免这个问题。@JonSkeet我想。我已经修改了答案。