日期:2014-05-16  浏览次数:21121 次

jasperreport报表生成时编译的错误

在帮徐老板解决一个jasperreport报表生成时编译的错误:

刚开始时,加上他所给的 jar 包之后,错误显示为:

net.sf.jasperreports.engine.JRException: Error loading byte data : D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378695722608_599040.class

自己网上查找了一下,发现网上的解决办法是在.jrxml 文件的

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="XYLineChartReport" columnCount="2" pageWidth="595" pageHeight="842" columnWidth="270" columnSpacing="15" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30">

在name = “***” 后添加 language="groovy",然后添加groovy的jar包即可。

这时徐老板发现和我的运行错误不一样,他的错误是:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:4: 错误: 程序包net.sf.jasperreports.engine不存在
import net.sf.jasperreports.engine.*;
^
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:5: 错误: 程序包net.sf.jasperreports.engine.fill不存在
import net.sf.jasperreports.engine.fill.*;
^
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:18: 错误: 找不到符号
public class XYLineChartReport_1378692178817_731157 extends JREvaluator
                                                            ^
  符号: 类 JREvaluator
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:25: 错误: 找不到符号
    private JRFillParameter parameter_REPORT_LOCALE = null;
            ^
  符号:   类 JRFillParameter
  位置: 类 XYLineChartReport_1378692178817_731157
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:26: 错误: 找不到符号
    private JRFillParameter parameter_JASPER_REPORT = null;
            ^
  符号:   类 JRFillParameter
  位置: 类 XYLineChartReport_1378692178817_731157
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:27: 错误: 找不到符号
    private JRFillParameter parameter_REPORT_VIRTUALIZER = null;
            ^
  符号:   类 JRFillParameter
  位置: 类 XYLineChartReport_1378692178817_731157
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:28: 错误: 找不到符号
    private JRFillParameter parameter_REPORT_TIME_ZONE = null;
            ^
  符号:   类 JRFillParameter
  位置: 类 XYLineChartReport_1378692178817_731157
D:\ZD\NewTask\DropDownButton7.3.1\DropDownButton\app\XYLineChartReport_1378692178817_731157.java:29: 错误: 找不到符号
    private JRFillParameter parameter_SORT_FIELDS = null;

发现和我添加的nodes不一样,我是全选,徐老板是只选择了platform,以为是这里出了问题。

经过猜测与实验,发现在java中勾选java选项并resolve后,出现的错误是一致的。(当然全选nodes时错误也应该是一样的)

为了找到问题的根本原因,我又在网上搜了一下

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file

结果是说jdt-complier.jar包需要添加,于是添加上就编译通过了。