apache POI java.lang.NoClassDefFoundError:org/apache/commons/compress/archivers/zip/ZipFile

新手上路,请多包涵

我尝试使用 Apache POI 4.0.0 制作 word 文档,但出现错误

线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError:org/apache/commons/compress/archivers/zip/ZipFile at org.apache.poi.openxml4j.opc.OPCPackage.create(OPCPackage.java:365)在 org.apache.poi.xwpf.usermodel.XWPFDocument.newPackage(XWPFDocument.java:158) 在 org.apache.poi.xwpf.usermodel.XWPFDocument.(XWPFDocument.java:149) 在 model.Model_dokumen.Cetak(Model_dokumen. java:32) 在 view.Frame_surat.cetak_dan_simpanActionPerformed(Frame_surat.java:414) 在 view.Frame_surat.access\(400(Frame_surat.java:23) 在 view.Frame_surat\)5.actionPerformed(Frame_surat.java:211) 在 javax.swing。 AbstractButton.fireActionPerformed(AbstractButton.java:2022)在 javax.swing.AbstractButton\(Handler.actionPerformed(AbstractButton.java:2348)在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)在 javax.swing.DefaultButtonModel.setPressed (DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Compo nent.processMouseEvent(Component.java:6533) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6298) 在 java.awt.Container.processEvent(Container .java:2238) 在 java.awt.Component.dispatchEventImpl(Component.java:4889) 在 java.awt.Container.dispatchEventImpl(Container.java:2296) 在 java.awt.Component.dispatchEvent(Component.java:4711)在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475) 在 java.awt。 Container.dispatchEventImpl(Container.java:2282) 在 java.awt.Window.dispatchEventImpl(Window.java:2746) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue .java:760) 在 java.awt.EventQueue.access\)500(EventQueue.java:97) 在 java.awt.EventQueue\(3.run(EventQueue.java:709) 在 java.awt.EventQueue\)3.run(EventQueue.java :703) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain\(JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 java.security.ProtectionDomain\)JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) java.awt.EventQueue\(4.run(EventQueue.java:733) 在 java.awt.EventQueue\)4.run(EventQueue.java:731) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain\( JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:730) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) 在 java.awt.EventDispatchThread.pumpEventsForDispatchThread(E .java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.jav) a:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 引起:java.lang.ClassNotFoundException: org.apache.commons.compress.archivers.zip.ZipFile URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher\)AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java :357) … 还有 43 个 Blockquote

我遵循此站点的教程: tutorials point ,并且我尝试了博客、论坛等的任何解决方案,但对我没有任何作用。这是我的代码:

 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import view.Frame_surat;

/**
 *
 * @author nasution
 */
public class Model_dokumen {

    public void Cetak(Frame_surat fs) throws Exception {
        try {
            XWPFDocument document = new XWPFDocument();
//            XWPFDocument document = new XWPFDocument();//blank document
            //membuat paragraf

             //membuat dokumen surat keluar
            try (FileOutputStream outputStream = new FileOutputStream(new File("Surat_keluar.docx"))) {
                //membuat paragraf
                XWPFParagraph paragraf = document.createParagraph();
                XWPFRun run = paragraf.createRun();
                run.setText("ini adalah halaman dokumen yg baru saja dibuat menggunakan POI");
                document.write(outputStream);
            }
            JOptionPane.showMessageDialog(null, "Surat keluar berhasil dibuat");
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Model_dokumen.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Model_dokumen.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

原文由 Juliar Nasution 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

尝试搜索类名然后下载 jar,您可能会找到指定的 jar 文件。 “例如:XWPF jar 文件下载。”并将 XWPF 的类下载为 jar 文件我以前遇到过这个问题,我这样解决了它但对我来说它是 pdfBox。 PS:尝试在 jar 文件中搜索“org.apache.poi.xwpf”,您会得到更多结果。

原文由 Sparks 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于 poi-4.1.0,我必须将这些添加到类路径中: dom4j-1.6.jar xmlbeans-3.1.0.jar commons-collections4-4.3.jar commons-compress-1.18.jar 然后才对 Excel.xlsx 起作用文件:

 ExcelWBook = new XSSFWorkbook(ExcelFile);

原文由 Chris Liston 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题