title: Apache POI - java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
body: <p>I'm trying to read a word document (.docx) using Apache POI and it gives me this error...</p>
  
  <blockquote>
    <p>Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
        at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.(ZipArchiveThresholdInputStream.java:63)
        at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:178)
        at org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:104)
        at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:301)
        at gui.CryptoGUI.selectFileButtonActionPerformed(CryptoGUI.java:645)
        at gui.CryptoGUI.access$1100(CryptoGUI.java:27)
        at gui.CryptoGUI$11.actionPerformed(CryptoGUI.java:321)
        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 com.jtattoo.plaf.BaseButtonListener.mouseReleased(BaseButtonListener.java:65)
        at java.awt.Component.processMouseEvent(Component.java:6535)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
        at java.awt.Component.processEvent(Component.java:6300)
        at java.awt.Container.processEvent(Container.java:2236)
        at java.awt.Component.dispatchEventImpl(Component.java:4891)
        at java.awt.Container.dispatchEventImpl(Container.java:2294)
        at java.awt.Component.dispatchEvent(Component.java:4713)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
        at java.awt.Container.dispatchEventImpl(Container.java:2280)
        at java.awt.Window.dispatchEventImpl(Window.java:2750)
        at java.awt.Component.dispatchEvent(Component.java:4713)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
        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:76)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.awt.EventQueue$4.run(EventQueue.java:729)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        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)</p>
  </blockquote>
  
  <p>I have below libraries in my classpath,</p>
  
  <p><a href="https://i.stack.imgur.com/z3G3M.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/z3G3M.png" alt="enter image description here"></a></p>
  
  <p>This is the code which I'm getting this error</p>
  
  <pre><code>private void selectFileButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                 
      final JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
      int returnValue = jfc.showOpenDialog(null);
  
      if (returnValue == JFileChooser.APPROVE_OPTION) {
          FileInputStream fis = null;
          try {
              selectedFile = jfc.getSelectedFile();
              fileNameText.setText(selectedFile.getAbsolutePath());
              double bytes = selectedFile.length();
              double kilobytes = (bytes / 1024);
              fileSizeLabel.setText("Size : " + (Math.round(kilobytes * 100.0) / 100.0) + " KB");
              fis = new FileInputStream(selectedFile);
              XWPFDocument xdoc = new XWPFDocument(OPCPackage.open(fis)); // EXCEPTION THROWS FROM HERE
              XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
              System.out.println(extractor.getText());
  
  
          } catch (FileNotFoundException ex) {
              Logger.getLogger(CryptoGUI.class.getName()).log(Level.SEVERE, null, ex);
          } catch (IOException ex) {
              Logger.getLogger(CryptoGUI.class.getName()).log(Level.SEVERE, null, ex);
          } catch (InvalidFormatException ex) {
              Logger.getLogger(CryptoGUI.class.getName()).log(Level.SEVERE, null, ex);
          } finally {
              try {
                  fis.close();
              } catch (IOException ex) {
                  Logger.getLogger(CryptoGUI.class.getName()).log(Level.SEVERE, null, ex);
              }
          }
      }
  }
  </code></pre>
  
  <p>Looks like I'm missing a library but I think I have added everything I needed for this. What am I missing here?</p>