我正在尝试将 jasper 报告中的字符串值转换为 long 并将其转换为 Date 对象。但我总是最终得到一个从 String 到 Long 的类转换异常。
java.lang.String cannot be cast to java.lang.Number
我正在尝试以下代码
<variable name="date" class="java.util.Date">
<variableExpression><![CDATA[new Date(Long.getLong($F{field}))]]></variableExpression>
</variable>
Long.getLong(String s) 在 Java 中提供所需的输出。但是当我们使用相同的 java 表达式时,它会在 jasper 中给出异常。jasper 对原始 java 类型的处理方式不同吗?
编辑:完整的堆栈跟踪
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
at net.sf.jasperreports.charts.fill.JRFillTimeSeries.evaluate(JRFillTimeSeries.java:147)
at net.sf.jasperreports.charts.fill.JRFillTimeSeriesDataset.customEvaluate(JRFillTimeSeriesDataset.java:104)
at net.sf.jasperreports.engine.fill.JRFillElementDataset.evaluate(JRFillElementDataset.java:155)
at net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:160)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:765)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
at NwLogCollector.main(MyExp.java:682)