在帮徐老板解决一个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包需要添加,于是添加上就编译通过了。