Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 ConversionException:Jasper报告上不可解析的日期_Java_Jasper Reports - Fatal编程技术网

Java ConversionException:Jasper报告上不可解析的日期

Java ConversionException:Jasper报告上不可解析的日期,java,jasper-reports,Java,Jasper Reports,我正在开发一个使用Jasper报告的系统。最近它开始抛出以下错误: org.apache.commons.beanutils.ConversionException: Unparseable date: "03/03/1981" at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:241) at org.apache.commons.

我正在开发一个使用Jasper报告的系统。最近它开始抛出以下错误:

org.apache.commons.beanutils.ConversionException: Unparseable date: "03/03/1981"
        at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:241)
        at org.apache.commons.beanutils.locale.LocaleConvertUtilsBean.convert(LocaleConvertUtilsBean.java:285)
        at net.sf.jasperreports.engine.data.JRAbstractTextDataSource.convertStringValue(JRAbstractTextDataSource.java:69)
        at net.sf.jasperreports.engine.data.JRXmlDataSource.getFieldValue(JRXmlDataSource.java:313)
        at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:823)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:787)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1478)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:125)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:942)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
        at XmlJasperInterface.report(XmlJasperInterface.java:89)
        at XmlJasperInterface.main(XmlJasperInterface.java:63)
Caused by: java.text.ParseException: Unparseable date: "03/03/1981"
        at java.text.DateFormat.parse(DateFormat.java:337)
        at net.sf.jasperreports.engine.util.JRDateLocaleConverter.parse(JRDateLocaleConverter.java:84)
        at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:232)
        ... 13 more
我不知道是什么引起的。我们最近还升级了Jasper reports,但我记得它在升级后仍能正常工作

我发现了一篇题为“添加以下几行的要点”的博客文章:

String pattern = "MM/dd/yyyy";
Locale locale = Locale.getDefault();
DateLocaleConverter converter = new DateLocaleConverter(locale, pattern);
converter.setLenient(true);
ConvertUtils.register(converter, java.util.Date.class);
但他们没有改变什么。我仍然会犯同样的错误

触发错误的行如下所示:

jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JRXmlDataSource(System.in, selectCriteria));
谢谢


更新:将Jasper Reports降级到1.1.0使其再次工作,因此很可能是升级破坏了它。

您需要在数据源中设置日期模式,如下所示:

JRXmlDataSource datasource = new JRXmlDataSource(....);
datasource.setDatePattern("MM/dd/yyyy");

您的区域设置是什么?对于模式“MM/dd/yyyy”,我将使用Locale.US而不是Locale.getDefault,后者提供当前操作系统Locale.Pawel,我的Locale是de_CH,但即使将日期写为d.m.yyyy也没有帮助。我尝试过所有主要的约会方式,但都没有成功。你能提供一些答案背后的“为什么”吗?在他为日期创建数据源之前,日期是否被错误地解释为字符串?