所以我已经成功创建了我的报告,并且我一直在尝试将一个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
我目前拥有的图书馆:
答案 0 :(得分:1)
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap
看起来您可能错过了将commons-collection jar添加到项目库中。您使用的是哪种版本的JasperReports?如果是6.x,请尝试将commons-collections-3.2.2.jar
添加到项目类路径中。