【问题标题】:NullPointerException on setting date from Notes document [duplicate]从 Notes 文档设置日期时出现 NullPointerException [重复]
【发布时间】:2019-11-01 09:51:38
【问题描述】:

我的代码中出现以下空指针异常:

fieldName = "created";
Date startDate; 
DateFormat df = new SimpleDateFormat(this.dtFormatShort);
startDate = df.parse(doc.getCreated().getDateOnly() + " " + doc.getCreated().getTimeOnly()); //here I get the error
customer.setCreated(startDate);

我在我的应用程序中使用了类似的代码,但我没有空指针异常。

错误是否与我没有首先调用 Date 对象的构造函数有关?为什么我的应用的其他地方没有出现异常?

【问题讨论】:

  • 这与不调用构造函数无关;)没有人能说出为什么它只在这个地方失败。如果在 parse 行中抛出 NullPointer,最可能的原因是 doc 或其字段之一为空。
  • 当然我检查过doc是否不为空。
  • 它是保存的文档吗?还是内存中的文档?
  • 保存的文档
  • 当我查看客户对象并通过调试工具栏调查创建的字段时,我看到该字段具有正确的值,例如java.util.Date toString:2019 年 10 月 2 日星期三 13:48:00 CEST

标签: java xpages lotus-domino


【解决方案1】:

我不知道为什么你会在那里得到一个 NPE(可能没有设置日期格式),但你应该可以直接执行 doc.getCreated().toJavaDate() 之类的操作,从而避免解析问题。

【讨论】:

  • 在规范中客户对秒数不感兴趣,这就是为什么格式化程序可能是 yyyy-MM-dd HH:mm
【解决方案2】:

Java 构造函数不能返回null。它要么返回一个非空值,要么抛出一个异常。因此,df 不为空。

唯一的其他选择是docdoc.getCreated()null。要么,要么你在 JVM 中发现了一个错误。

附:在重新分配之前调用 Date 的构造函数应该什么都不做。这段代码中抛出了一个 NPE。但是如果你认真地认为这是一个 JVM 错误,在测试中没有什么坏处:)

【讨论】:

  • 当然我检查过 doc 是否不为空。在开发环境中运行相同的代码不会导致错误。相同版本的 Domino、FP 等
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
相关资源
最近更新 更多