从Java Netbeans打印iReport时出错

时间:2018-09-22 15:59:41

标签: java jasper-reports

我有这个jButton:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    printPO();
}

这是做什么的

private void printPO() {
    try {

        HashMap param = new HashMap();
        param.put("KDPO", txtKDPO.getText());
        String report = "src/simapt/iReports/print_PO.jrxml";
        JasperReport jr = JasperCompileManager.compileReport(report);
        JasperPrint jp = JasperFillManager.fillReport(jr, param, con);
        JasperViewer.viewReport(jp);
    }
    catch (Exception X) {
        JOptionPane.showMessageDialog(rootPane, X);
    }
}

我已经安装了jasper文件,已经安装了所有jasper插件和库。

但是当我按下按钮时,出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap
    at net.sf.jasperreports.engine.util.JRSingletonCache.<init>(JRSingletonCache.java:53)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.<clinit>(JRXmlDigesterFactory.java:197)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:262)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:193)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:184)
    at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:285)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:572)
    at simapt.Transaction.FrmPurchaseOrder.printPO(FrmPurchaseOrder.java:1197)
    at simapt.Transaction.FrmPurchaseOrder.jButton1ActionPerformed(FrmPurchaseOrder.java:1828)
    at simapt.Transaction.FrmPurchaseOrder.access$3600(FrmPurchaseOrder.java:46)
    at simapt.Transaction.FrmPurchaseOrder$24.actionPerformed(FrmPurchaseOrder.java:950)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.ReferenceMap
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 48 more

我尝试了其他几个示例来打印文件或在Jasperviewer中预览文件,但是没有运气,我遇到了类似的错误。

my jasper libraries and version numbers

and this is the jasper plugin that I used within my netbeans 8.2

these are the jasper files both on from inside the project and in the folder inside src

1 个答案:

答案 0 :(得分:0)

就像@skandigraun所建议的那样,我得到了一些旧的库,这些库缺少运行报告所需的某些类。

解决方案是更新这些jar:

Apache通用集合v2.1至3.0.1 Apache Groovy v1.0到2.1

现在一切正常。