如何从Java代码传递JasperReport中的整数参数值?

时间:2018-04-25 05:15:17

标签: java jasper-reports

所以我已经成功创建了我的报告,并且我一直在尝试将一个int变量作为参数添加到我的查询中,但我继续收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap

我必须提供参数的代码是:

private void report(){
    try {
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/DB?autoReconnect=true&useSSL=false", "root", "root");

        Map parameter = new HashMap();

        parameter.put("ID", last_Report);

        String path = System.getProperty("user.dir") + "/src/Reports/Report1.jrxml";

        JasperReport content = JasperCompileManager.compileReport(path);

        JasperPrint printRep = JasperFillManager.fillReport(content, parameter, con);

        JasperViewer.viewReport(printRep);

    } catch (JRException ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
    }
}

我已经检查过last_Report变量是否具有正确的值,并且它确实有一个int,当我打印Map时,我得到了这个:[{ID=25}]

我在这里声明了我的参数:

<parameter name="ID" class="java.lang.Integer">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>

这是我的疑问:

Select * from Reports where reports_ID = $P{ID};

修改:我删除并重新添加了所有库,现在我得到了这个:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

我目前拥有的图书馆:

  • MySQL的连接器的Java-45年5月1日 - bin.jar
  • 公地BeanUtils的-1.9.3.jar
  • 公地collections4-4.1.jar
  • 公地digester3-3.2.jar
  • 共享记录-1.2.jar
  • itext7-7.0.2.zip
  • jfreechart的-1.0.19-Demo.jar文件
  • jxl.jar
  • POI-3.17.jar
  • 的JasperReports-6.5.1.jar
  • 的JasperReports的字体-6.5.1.jar
  • 的JasperReports-javaflow-6.5.1.jar

1 个答案:

答案 0 :(得分:1)

java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap

看起来您可能错过了将commons-collection jar添加到项目库中。您使用的是哪种版本的JasperReports?如果是6.x,请尝试将commons-collections-3.2.2.jar添加到项目类路径中。