【问题标题】:Error combine jasper report with java servlet将 jasper 报告与 java servlet 结合时出错
【发布时间】:2022-01-08 00:10:16
【问题描述】:

我在 dwr 中使用 jasperReports 生成报告。我收到这些错误

信息:编译报告表达式类文件时遇到错误: C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:4: 包 net.sf.jasperreports.engine 不存在 导入 net.sf.jasperreports.engine.*; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:5: 包 net.sf.jasperreports.engine.fill 不存在 导入 net.sf.jasperreports.engine.fill.*; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:13: 包 net.sf.jasperreports.engine 不存在 导入 net.sf.jasperreports.engine.*; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:15: 包 net.sf.jasperreports.engine.data 不存在 导入 net.sf.jasperreports.engine.data.*; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:21:找不到符号 符号:JREvaluator 类 公共类classic_1314606689888_793831扩展了JREvaluator ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:28:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_LOCALE = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:29:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_JASPER_REPORT = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:30:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_VIRTUALIZER = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:31:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_TIME_ZONE = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:32:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_SORT_FIELDS = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:33:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_FILE_RESOLVER = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:34:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_SCRIPTLET = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:35:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_PARAMETERS_MAP = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:36:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_CONNECTION = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:37:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_CLASS_LOADER = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:38:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_DATA_SOURCE = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:39:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_URL_HANDLER_FACTORY = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:40:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_IS_IGNORE_PAGINATION = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:41:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_FORMAT_FACTORY = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:42:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_MAX_COUNT = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:43:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_TEMPLATES = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:44:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 私有 JRFillParameter 参数_REPORT_RESOURCE_BUNDLE = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:45:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私人 JRFillField field_sach_MaSach = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:46:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私有 JRFillField field_sach_TenSach = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:47:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私人 JRFillField field_sach_MaNhaXuatBan = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:48:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私人 JRFillField field_sach_GiaBan = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:49:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私人 JRFillField field_sach_SoLuongTon = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:50:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 私人 JRFillField field_sach_MaTheLoai = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:51:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 私有 JRFillVariable 变量_PAGE_NUMBER = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:52:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 私有 JRFillVariable 变量_COLUMN_NUMBER = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:53:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 私有 JRFillVariable 变量_REPORT_COUNT = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_13146 信息:06689888_793831.java:54:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 私有 JRFillVariable 变量_PAGE_COUNT = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:55:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 私有 JRFillVariable 变量_COLUMN_COUNT = null; ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:78:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_LOCALE = (JRFillParameter)pm.get("REPORT_LOCALE"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:79:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_JASPER_REPORT = (JRFillParameter)pm.get("JASPER_REPORT"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:80:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_VIRTUALIZER = (JRFillParameter)pm.get("REPORT_VIRTUALIZER"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:81:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_TIME_ZONE = (JRFillParameter)pm.get("REPORT_TIME_ZONE"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:82:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_SORT_FIELDS = (JRFillParameter)pm.get("SORT_FIELDS"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:83:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_FILE_RESOLVER = (JRFillParameter)pm.get("REPORT_FILE_RESOLVER"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:84:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_SCRIPTLET = (JRFillParameter)pm.get("REPORT_SCRIPTLET"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:85:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_PARAMETERS_MAP = (JRFillParameter)pm.get("REPORT_PARAMETERS_MAP"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:86: 找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_CONNECTION = (JRFillParameter)pm.get("REPORT_CONNECTION"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:87:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_CLASS_LOADER = (JRFillParameter)pm.get("REPORT_CLASS_LOADER"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:88: 找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_DATA_SOURCE = (JRFillParameter)pm.get("REPORT_DATA_SOURCE"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:89:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_URL_HANDLER_FACTORY = (JRFillParameter)pm.get("REPORT_URL_HANDLER_FACTORY"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:90:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 参数_IS_IGNORE_PAGINATION = (JRFillParameter)pm.get("IS_IGNORE_PAGINATION"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:91:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_FORMAT_FACTORY = (JRFillParameter)pm.get("REPORT_FORMAT_FACTORY"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:92:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_MAX_COUNT = (JRFillParameter)pm.get("REPORT_MAX_COUNT"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:93:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_TEMPLATES = (JRFillParameter)pm.get("REPORT_TEMPLATES"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:94:找不到符号 符号:类 JRFillParameter 地点:classic_1314606689888_793831 parameter_REPORT_RESOURCE_BUNDLE = (JRFillParameter)pm.get("REPORT_RESOURCE_BUNDLE"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:103:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_MaSach = (JRFillField)fm.get("sach_MaSach"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:104:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_TenSach = (JRFillField)fm.get("sach_TenSach"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:105:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_MaNhaXuatBan = (JRFillField)fm.get("sach_MaNhaXuatBan"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:106:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_GiaBan = (JRFillField)fm.get("sach_GiaBan"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:107:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_SoLuongTon = (JRFillField)fm.get("sach_SoLuongTon"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:108:找不到符号 符号:类 JRFillField 地点:classic_1314606689888_793831 field_sach_MaTheLoai = (JRFillField)fm.get("sach_MaTheLoai"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:117:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 variable_PAGE_NUMBER = (JRFillVariable)vm.get("PAGE_NUMBER"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:118:找不到符号 符号:类 JRFillVariable 地点:班级 信息:classic_1314606689888_793831 variable_COLUMN_NUMBER = (JRFillVariable)vm.get("COLUMN_NUMBER"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:119:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 variable_REPORT_COUNT = (JRFillVariable)vm.get("REPORT_COUNT"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:120:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 variable_PAGE_COUNT = (JRFillVariable)vm.get("PAGE_COUNT"); ^ C:\Program Files\glassfish-3.1\glassfish\domains\domain1\classic_1314606689888_793831.java:121:找不到符号 符号:类 JRFillVariable 地点:classic_1314606689888_793831 variable_COLUMN_COUNT = (JRFillVariable)vm.get("COLUMN_COUNT"); ^ 61 个错误

请帮助我生成报告

【问题讨论】:

  • 您能否确认 jasperreports jar 已打包在您的 WAR 中?报告编译器似乎无法找到正确的包,因为它们不在类路径中。

标签: java jasper-reports


【解决方案1】:

尝试在 glassfish3/glassfish/domains/domain1/lib/ext 下添加 jasperreports*.jar 和任何其他包含报告中引用的类的 jar。 重启应用服务器。

问候

【讨论】:

    【解决方案2】:

    JasperReport 库似乎丢失了。最新版 JasperReports 可以在这里下载http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%204.5.0/

    将 jar 文件添加到您的项目并重新部署。

    确保您也具有所需的依赖项:http://www.installationwiki.org/JasperReports

    【讨论】:

      【解决方案3】:

      您需要在应用程序的类路径中添加 JDT 库。 (WEB-INF/lib)

      jdtcore and jdt-compiler

      在撰写本文时,版本 3.1.0 和 3.1.1 分别适用于 jasperreports 4.7.0。

      就我现在而言,此错误仅发生在 glassfish 中。在tomcat中不会出现这个问题。

      Jasper FAQ: When should I compile my report templates and how?

      【讨论】:

        【解决方案4】:

        我也有同样的错误,但是在使用 Groovy 和 Jasperreports 时。 我收到这些错误:

        net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
        /home/avorsterman/dev/prj/groovy/page1_1641570877927_139275.java:18: error: cannot find symbol
        public class page1_1641570877927_139275 extends JREvaluator
                                                        ^
          symbol: class JREvaluator
        /home/avorsterman/dev/prj/groovy/page1_1641570877927_139275.java:25: error: cannot find symbol
            private JRFillVariable variable_PAGE_NUMBER = null;
                    ^
          symbol:   class JRFillVariable
          location: class page1_1641570877927_139275
        /home/avorsterman/dev/prj/groovy/page1_1641570877927_139275.java:4: error: package net.sf.jasperreports.engine does not exist
        import net.sf.jasperreports.engine.*;
        ^
        /home/avorsterman/dev/prj/groovy/page1_1641570877927_139275.java:5: error: package net.sf.jasperreports.engine.fill does not exist
        import net.sf.jasperreports.engine.fill.*;
        ^
        /home/avorsterman/dev/prj/groovy/page1_1641570877927_139275.java:64: error: cannot find symbol
                variable_PAGE_NUMBER = (JRFillVariable)vm.get("PAGE_NUMBER");
                                        ^
          symbol:   class JRFillVariable
          location: class page1_1641570877927_139275
        5 errors
        

        将此依赖项添加到项目后,错误已修复:

        <dependency>
          <groupId>org.eclipse.jdt.core.compiler</groupId>
          <artifactId>ecj</artifactId>
          <version>4.6.1</version>
        </dependency>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-07
          • 1970-01-01
          相关资源
          最近更新 更多