tmap talend NullPointerException

时间:2018-01-25 15:46:17

标签: nullpointerexception talend

我试图将两个csv读入我的SQL Server。获得NullPointerException即使我每次都允许nullables并检查null。在调试时,似乎每次都检查空检查表达式是否为FALSE条件,即使该字符串为空。

https://i.stack.imgur.com/wSN8T.png

https://i.stack.imgur.com/JWheG.png

https://i.stack.imgur.com/j8R1L.png

这是我的空检查的一个例子:

( row2.Acq_date.equals(null) || row2.Acq_date.equals("") || 
row2.Acq_date == null ) ? null : (int) 
TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")

1 个答案:

答案 0 :(得分:2)

您不应该像row2.Acq_date.equals(null)那样进行空检查 这是正确的方法:row2.Acq_date == null(您实际包含在测试中,仅在测试row2.Acq_date.equals(null)后执行此操作为时已晚,因为这是抛出NullPointerException的部分)。

这是正确的方法:

( row2.Acq_date == null ? null : (int) 
TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")

根据您的评论,row2.Acq_date是日期类型,您可以使用适当的日期格式直接从文件中读取。如果文件中的列为空(或包含空格),则Talend返回一个空日期,该日期由上述测试处理。