JasperFillManager.fillReport返回java.lang.IllegalArgumentException:name

时间:2012-08-29 08:18:06

标签: java jasper-reports

我想在解决 JasperReports 错误时寻求一些帮助。已经在网上寻找解决方案,但似乎无法做到正确。

问题在于,每当我使用 JasperFillManager.fillReport(java.io.InputStream inputStream, java.util.Map<java.lang.String, java.lang.Object> params, JRDataSource dataSource) 填充报告时,它总会返回
java.lang.IllegalArgumentException: name.

我正在使用 iReport 4.6 ,Java 6。

我的代码:

try {
    Collection clCol = dUtil.getInfo(DateQ1, sType);

    String sRepNameJasper = dUtil.getReportFileName(sReportType, 0); // Get report filename from DB.
    String sRepTypeJasper = pReader.getPropValue(pReader.GETREPORTMPLT) + sRepNameJasper; //Append report directory
    InputStream reportStreamJasper = getServlet().getServletConfig().getServletContext().getResourceAsStream(sRepTypeJasper); //Get ResourceAsStream of report file
    jasperPrint = JasperFillManager.fillReport(reportStreamJasper, params, new JRBeanCollectionDataSource(clCol)); //Populate report 

    // Create Excel File
    File fl = new File(sRepTypeJasper.replaceAll(".jasper", ".xls"));
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    OutputStream os = new FileOutputStream(fl);
    JRXlsExporter exporterXLS = new JRXlsExporter();
    exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
    exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, baos);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
    exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporterXLS.exportReport();
    os.write(baos.toByteArray());
    os.flush();
    os.close();
    baos.close();
} catch (JRException je) {
    je.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

例外情况如下:

  

java.lang.IllegalArgumentException:name   at sun.misc.URLClassPath $ Loader.findResource(URLClassPath.java:460)   at sun.misc.URLClassPath.findResources(URLClassPath.java:146)   在java.net.URLCLassLoader $ 2.run(URLClassLoader.java:385)   at java.security.AccessController.doPriviledged(Native Method)   at java.net.URLClassLoader.findResource(URLClassLoader.java:382)   at java.lang.ClassLoader.getResource(ClassLoader.java:1002)   at java.lang.ClassLoader.getResource(ClassLoader.java:997)   at com.sun.enterprise.v3.server.APIClassLoaderServiceImpl $ APIClassLoader.getResource(APIClassLoaderServiceImpl.java:205)   at java.lang.ClassLoader.getResource(ClassLoader.java:997)   at java.lang.ClassLoader.getResource(ClassLoader.java:997)   在org.glassfish.web.loader.WebappClassLoader.getResource(WebappClassLoader.java:1153)   at net.sf.jasperreports.engine.util.JRResourcesUtil.findClassLoaderResource(JRResourcesUtil.java:565)   等....

我很感激能得到的所有帮助。

0 个答案:

没有答案