0

I have this jButton:

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

this what it does :

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);
    }
}

I got the jasper files in place, I got all of the jasper plugins and libraries.

but when I pressed the button, I got the following error :

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

I have tried several other examples to either print the file or preview it in Jasperviewer but no luck, I got similar error.

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

Alex K
  • 22,315
  • 19
  • 108
  • 236
Dave Pradana
  • 145
  • 12
  • Do you have the Apache commons-collection library in your classpath? – skandigraun Sep 22 '18 at 16:02
  • was that the common-collection-2.1.jar ? if yes then I got it. there are 3 images at the bottom of my post, one of em showed the libraries needed I have added into my project. – Dave Pradana Sep 22 '18 at 16:03
  • Yes, although it is pretty old. The code seems to look for version 3.2.2. (This class was not in the Map package back in v2.1, and it was moved to collections4 package in v4+) – skandigraun Sep 22 '18 at 16:10
  • @skandigraun Big Thnks Man! – Dave Pradana Sep 22 '18 at 16:28
  • @skandigraun Now Suddenly I recieve the same error again, even though I am using the same new common collection , this is kinda frustrating. – Dave Pradana Sep 28 '18 at 05:10
  • It is possible that some new dependency added a new version of commons in your classpath, and now you have two, conflicting each other. Check your classpath, and if you find more than commons, get rid of the new ones. – skandigraun Sep 28 '18 at 16:28
  • Seems like I forgot that I updated from common collection 3.2.1 to 4.2 i thought with newer version would be better, turn out the 4.2 version caused the same error with v2.1 now i have swithed back to 3.2.1 and evwrything is running properly again, big thanks – Dave Pradana Sep 28 '18 at 17:17
  • Ahhh yeah. For some reason (have no idea why...) they moved that class to a new package within the library (to collections4 instead of collections). – skandigraun Sep 28 '18 at 17:19

1 Answers1

0

Seems like, as @skandigraun has advised, I got some old libraries which missing some class required to run the report.

The Solution is to update these jars :

Apache common collections v2.1 to 3.0.1 Apache Groovy v1.0 to 2.1

and now everything run perfectly.

Dave Pradana
  • 145
  • 12