【问题标题】:Getting error while executing report with jasperreport [duplicate]使用 jasperreport 执行报告时出错 [重复]
【发布时间】:2019-06-05 10:20:55
【问题描述】:

我想使用 jasper 报告库获取报告,但我收到错误 “net.sf.jasperreports.engine.JRException:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:1 字节 UTF-8 序列的字节 1 无效。”

     private JasperPrint prepareReport(EnumList.JRList report) {
        try {
            Connection conn = getConnection();
            String jasperResource = "/reports/" + report.getName() + ".jasper";
            InputStream jasperStream = getClass().getResourceAsStream(jasperResource);
            //InputStreamReader inputStreamReader = new InputStreamReader(jasperStream, Charset.forName("UTF-8"));

            JasperReport jasperReport = 
   JasperCompileManager.compileReport(jasperStream);
            Map<String, Object> param = new HashMap<String, Object>();
            JRDesignStyle jrDesignStyle = new JRDesignStyle();
            //jrDesignStyle.setPdfEncoding("UTF-8");
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, conn);

            return jasperPrint;
        } catch (Exception e) {
            System.out.println("reportPrepareError: " + report.getName());
            return null;
        }
    }

   public static JasperReport compileReport(InputStream inputStream) throws JRException 
  {
        return getDefaultInstance().compile(inputStream);
    }

  public JasperReport compile(InputStream inputStream) throws JRException {
        JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
        return this.compile(jasperDesign);
    }

【问题讨论】:

标签: jasper-reports


【解决方案1】:

.jasper 文件通常包含已编译的报告。

因此你不需要做JasperCompileManager.compileReport(jasperStream)但是

JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多