![](/img/trans.png)
[英]Reading Excel by Apache POI and Java web application but showing error as “java.io.IOException: org/apache/commons/compress/archivers/zip/ZipFile”
[英]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.poi.openxml4j.opc.OPCPackage.create(OPCPackage.java:365) 處的 org/apache/commons/compress/archivers/zip/ZipFile在 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) at view.Frame_surat.cetak_dan_simpanActionPerformed(Frame_surat.java:414) at view.Frame_surat.access$400(Frame_surat.java:23) at view.Frame_surat$5.actionPerformed(Frame_surat.java:211) at 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 nt.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at 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) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at 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.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) 在 java.security.AccessController.doPrivileged(Native Method) 在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:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventThreadsForFilters .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 在 java.net.URLClassLoader.findClass( 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 個
我正在關注這個網站的教程: 教程點,我嘗試了博客、論壇等的任何解決方案,但對我來說沒有任何效果。 這是我的代碼:
/*
* 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);
}
}
}
對於 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);
嘗試搜索類名,然后 jar 下載您可能會找到指定的 jar 文件。 “例如:XWPF jar 文件下載。” 並將 XWPF 的類下載為 jar 文件,我之前遇到過這個問題,我是這樣解決的,但對我來說它是 pdfBox。 PS:嘗試搜索“org.apache.poi.xwpf”的jar文件,你會得到更多的結果。
對於 maven 用戶,您可以從包名中輕松推斷出缺少 apache commons-compress 庫
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>
在 AGP 7.0 的 Android 上得到了這個,但出現以下錯誤:
- 出了什么問題:無法確定任務“:app:mergeDebugAssets”的依賴關系。
>
無法解析配置 ':app:debugRuntimeClasspath' 的所有依賴項。
>
無法創建任務 ':app:minifyReleaseWithR8'。
>
'void org.apache.commons.compress.archivers.zip.ZipFile.(java.nio.channels.SeekableByteChannel)'
根本原因是我沒有安裝正確的構建工具版本。
所以sdkmanager 'build-tools;<buildToolsVersion>'
為我解決了這個問題(其中buildToolsVersion
是你在 build.gradle(s) 中使用的版本,在我的情況下是 30.0.3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.