gpt4 book ai didi

java.lang.NoSuchMethodError : org. apache.poi.xssf.usermodel.XSSFWorkbook.(Ljava/io/InputStream;)V

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:10 25 4
gpt4 key购买 nike

我已经在我的类路径中包含了 dom4j-1-6.jar、poi 3.9 jar、poi ooxml schemas 3.9 jar、poi ooxml 3.9 jar、xmlbeans-2.3.0.jar。我使用了如下语法

InputStream ExcelFileToRead = new FileInputStream(relative+"/"+docName);
XSSFWorkbook wb_hssf = new XSSFWorkbook(ExcelFileToRead);

我收到以下错误,

java.lang.NoSuchMethodError: org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(Ljava/io/InputStream;)V
at com.admin.upload_images.doPost(upload_images.java:1057)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)

最佳答案

有一个 Apache POI FAQ entry covering virtually this case ,你应该阅读。但基本上,在运行时,您并没有使用您编译的 POI jar。相反,您以某种方式使用了不同的版本。这可能是因为您部署了不同的 jar,也可能是因为您的运行时、容器或框架传送了其他 POI jar,或者其他一些错误。根据this POI FAQ所有 POI jar 也必须来自同一版本。

因此,您需要在 snippet from the FAQ 的帮助下在运行时检查您的类路径如果您无法发现问题所在,请删除不匹配的 POI jar,这样您就只有在编译时使用的 POI jar。然后你的代码就可以工作了

但是...您的代码还存在一些其他问题!其一是当你有一个文件时你正在使用一个InputStream。这如explained in the Apache POI docs很糟糕,因为它使用了更多内存。将其更改为使用文件,例如使用此

Workbook wb = WorkbookFactory.create(new File("MyExcel.xls"));

其次,Apache POI 3.9现在有点老了,已经有a huge number of bug fixes since then了,因此您应该升级到最新版本(截至撰写本文时为 3.11 或 3.12 beta 1)

关于java.lang.NoSuchMethodError : org. apache.poi.xssf.usermodel.XSSFWorkbook.<init>(Ljava/io/InputStream;)V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com