当前位置: 首页 > 知识库问答 >
问题:

Apache POIjava.lang.NoClassDefFoundError: org/apache/共用/压缩/存档/zip/ZipFile

姜晨
2023-03-14

我尝试使用ApachePOI4.0.0制作word文档,但出现了错误

java线程“AWT-EventQueue-0”中出现异常。lang.NoClassDefFoundError:org/apache/commons/compress/archivers/zip/ZipFile位于org。阿帕奇。波伊。openxml4j。opc。OPCPackage。在组织上创建(OPCPackage.java:365)。阿帕奇。波伊。xwpf。用户模型。XWPFDocument。org上的newPackage(XWPFDocument.java:158)。阿帕奇。波伊。xwpf。用户模型。XWPFDocument。(XWPFDocument.java:149)at模型。多库门模型。Cetak(Model_dokumen.java:32)在视图中。帧_surat。在视图中执行了cetak_dan_SimpanAction(Frame_surat.java:414)。帧_surat。在视图中访问$400(Frame_surat.java:23)。框架保险费5美元。在javax上执行的操作(Frame_surat.java:211)。摆动抽象按钮。fireActionPerformed(AbstractButton.java:2022)在javax上执行。摆动AbstractButton$Handler。在javax上执行的操作(AbstractButton.java:2348)。摆动DefaultButtonModel。fireActionPerformed(DefaultButtonModel.java:402)在javax上执行。摆动DefaultButtonModel。在javax上按下setPressed(DefaultButtonModel.java:259)。摆动普拉夫。基本的基本按钮列表。在java上释放鼠标(BasicButtonListener.java:252)。awt。组成部分javax上的processMouseEvent(Component.java:6533)。摆动JComponent。java上的processMouseEvent(JComponent.java:3324)。awt。组成部分java上的processEvent(Component.java:6298)。awt。容器java上的processEvent(Container.java:2238)。awt。组成部分java上的dispatchEventImpl(Component.java:4889)。awt。容器java上的dispatchEventImpl(Container.java:2296)。awt。组成部分java上的dispatchEvent(Component.java:4711)。awt。轻量级调度员。java上的retargetMouseEvent(Container.java:4897)。awt。轻量级调度员。java上的processMouseEvent(Container.java:4534)。awt。轻量级调度员。java上的dispatchEvent(Container.java:4475)。awt。容器java上的dispatchEventImpl(Container.java:2282)。awt。窗java上的dispatchEventImpl(Window.java:2746)。awt。组成部分java上的dispatchEvent(Component.java:4711)。awt。事件队列。java上的dispatchEventImpl(EventQueue.java:760)。awt。事件队列。在java上访问$500(EventQueue.java:97)。awt。事件队列3美元。在java上运行(EventQueue.java:709)。awt。事件队列3美元。在java上运行(EventQueue.java:703)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain$JavaSecurityAccessImpl。java上的doIntersectionPrivilege(ProtectionDomain.java:80)。安全ProtectionDomain$JavaSecurityAccessImpl。java上的doIntersectionPrivilege(ProtectionDomain.java:90)。awt。事件队列4美元。在java上运行(EventQueue.java:733)。awt。事件队列4美元。在java上运行(EventQueue.java:731)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain$JavaSecurityAccessImpl。java上的doIntersectionPrivilege(ProtectionDomain.java:80)。awt。事件队列。java上的dispatchEvent(EventQueue.java:730)。awt。EventDispatchThread。java上的pumpOneEventForFilters(EventDispatchThread.java:205)。awt。EventDispatchThread。java上的pumpEventsForFilter(EventDispatchThread.java:116)。awt。EventDispatchThread。java上的pumpEventsForHierarchy(EventDispatchThread.java:105)。awt。EventDispatchThread。java上的pumpEvents(EventDispatchThread.java:101)。awt。EventDispatchThread。java上的pumpEvents(EventDispatchThread.java:93)。awt。EventDispatchThread。运行(EventDispatchThread.java:82)的原因是:java。lang.ClassNotFoundException:org。阿帕奇。平民压紧档案管理员。拉链java的ZipFile。网URLClassLoader。java上的findClass(URLClassLoader.java:381)。lang.ClassLoader。sun上的loadClass(ClassLoader.java:424)。杂项。启动器$AppClassLoader。java上的loadClass(Launcher.java:349)。lang.ClassLoader。loadClass(ClassLoader.java:357)。。。43更多的大宗报价

我遵循这个网站的教程: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);
        }
    }

}

共有3个答案

侯善
2023-03-14

对于maven用户,您可以很容易地从包名中推断出缺少ApacheCommons压缩库

https://mvnrepository.com/artifact/org.apache.commons/commons-compress

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.20</version>
</dependency>
关飞翔
2023-03-14

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

康鹏云
2023-03-14

对于poi-4.1.0,我必须将它们添加到类路径:dom4j-1.6。jarxmlbeans-3.1.0。jarcommons-collections4-4.3。jarcommons-compress-1.18。jar才在Excel中完成了这项工作。xlsx文件:

ExcelWBook = new XSSFWorkbook(ExcelFile);
 类似资料:
  • 问题内容: Groovy中是否有内置支持来处理Zip文件(采用groovy方式)? 还是我必须使用Java的java.util.zip.ZipFile来处理Groovy中的Zip文件? 问题答案: AFAIK,没有本机的方法。但是请查看本文,了解如何向File 添加方法,这与您要查找的内容非常接近。您只需要制定一个方法。

  • 问题内容: 我可以解压缩zip,gzip和rar文件,但是我还需要解压缩bzip2文件以及对其进行存档(.tar)。我还没有遇到好的图书馆可以使用。 我理想地将Java与Maven一起使用,我想将其作为依赖项包含在POM中。 您推荐什么图书馆? 问题答案: 我所看到的最好的选择是具有此Maven依赖项的Apache Commons Compress 。 从示例:

  • 我有一个学校作业,要求我接受一个输入流,并使用apache commons压缩库将其压缩成一个字节数组,格式有5种(根据用户规范)。这5种格式是:ZIP、JAR、SEVENZ、BZIP2和gzip。我编写了以下方法以JAR格式压缩输入流,但得到了一个带有字符串“no current entry”的illegalStateException。

  • 我有许多zip文件,我需要分发给用户,大约130个。每个zip文件包含许多类似的文本、html、xml和jpg文件。zip文件总计146兆字节;解压缩后,它们的内容总计551MB。 我想以尽可能小的格式将所有这些文件一起分发给用户。我研究了两种不同的方法,每种方法都使用两种不同的压缩方案,zip和7zip(我理解它要么是LZMA要么是其变体): 将所有zip文件压缩到一个压缩文件中,并发送该文件(

  • 问题内容: 我正在下载包含XML的压缩文件,由于延迟要求,我希望避免在操作之前将zip文件写入磁盘。但是,这不足以满足我的需求。没有办法说“这是一个zip文件的字节数组,请使用它”而不将其转换为流,并且它不可靠,因为它会扫描条目标头(请参阅EDIT下面的讨论,以了解为什么它不可靠)。 我尚无法访问要处理的zip文件,因此我不知道我是否能够通过来处理它们,因此我需要找到一种适用于任何有效ZIP文件的

  • 在我的网站中,超文本标记语言页面是使用托管在IBM应用服务器上的JSP动态创建的,并通过Apache网络服务器传递回浏览器。在Apache上启用了DEFLATE模块来压缩生成的HTML。HTML的源代码在浏览器上发布后显示了许多空白,这让我想到网络服务器压缩是否正在生效。 如何验证压缩是否生效?请求头将接受编码显示为“gzip/deflate”,而响应将内容编码显示为“gzip”。 其次,是否有任