JasperReports 无法呈现时间序列图表并出现错误 "null 'period' argument"

JasperReports fails to render a Time Series Chart with error "null 'period' argument"

我有一个相对简单的查询,returns 每行 3 个数据字段,带有一个日期。像这样:

SELECT DATE(date) AS date, val1, val2
FROM tables
WHERE ...

从报告本身(详细信息带),我可以确认所有 "date" 字段都是非空的。我的时间序列图表设置如下:

我得到的错误是:

java.lang.IllegalArgumentException: Null 'period' argument.
at org.jfree.chart.util.ParamChecks.nullNotPermitted(ParamChecks.java:65)
at org.jfree.data.time.TimeSeriesDataItem.<init>(TimeSeriesDataItem.java:99)
at org.jfree.data.time.TimeSeries.addOrUpdate(TimeSeries.java:887)
...

我什至尝试将 "Time Period Expression" 设置为表达式 (null == $F{date} ? "foo" : $F{date}) 只是为了看看我是否可以用不同的方式让它失败(比如 ClassCastException),但是它仍然失败并显示相同的消息。

$F{date}的数据类型是java.sql.Date,另外两个字段的数据类型都是java.lang.Long

我正在使用 Jasper Studio 6.4.0,如果有任何不同的话。

我可能找到了答案,看起来它可能是 JasperReports 中的一个错误。

我在发布之前在网上搜索了这个问题的答案,但大多数问题都没有答案,或者回复大致是 "happening to me, too" 或 "works for me",没有任何真正的答案。

每个可能的 null 进行处理 运行 处理后,它仍然无法正常工作。所以我尝试将 "TimePeriod" 设置更改为 "" 只是为了看看会发生什么。没有变化,但是回去编辑图表,我注意到 "Day" 仍然是 "TimePeriod" 参数的设置。奇怪。

我很想要天级的报表,但是我抓的是救命稻草,所以我把TimePeriod改成了"Week",报表运行成功了。

然后,我将 "TimePeriod" 从 "Week" 改回 "Day" 并且它是 运行 没有错误。所以也许默认的 "TimePeriod" 设置实际上是 <NULL> 但 Jasper Studio 显示为 "Day" 而实际上不是?我不知道。但是尝试将 TimePeriod 更改为其他内容,然后更改为您真正想要的内容。