将数据从 oracle DB 转储到 excel 时出错 - java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.set

Posted

技术标签:

【中文标题】将数据从 oracle DB 转储到 excel 时出错 - java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.setVersion(S)V【英文标题】:Error while dumping data from oracle DB to excel - java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.setVersion(S)V 【发布时间】:2021-11-28 10:48:57 【问题描述】:

我在将数据从数据库转储到 excel 时遇到此错误。 POI jar 用于将数据从 DB 复制到 excel。 代码正在wildfly应用服务器中运行。 以下是堆栈跟踪

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/STD].[jsp]] (http--127.0.0.1-8888-1) Servlet.service() for servlet jsp threw exception: java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.setVersion(S)V     
at org.apache.poi.hssf.model.Workbook.createBOF(Workbook.java:801) [poi.jar:]   
at org.apache.poi.hssf.model.Workbook.createWorkbook(Workbook.java:255) [poi.jar:]  
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:142) [poi.jar:]  
at org.apache.jsp.Framewrk.DownExcelFile_jsp._jspService(DownExcelFile_jsp.java:823)    
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [jbossweb-7.0.13.Final.jar:]  
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]    
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [jbossweb-7.0.13.Final.jar:]     
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [jbossweb-7.0.13.Final.jar:]    
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [jbossweb-7.0.13.Final.jar:]   
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]    
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]   
at com.github.ziplet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:300) [ziplet-2.0.0.jar:]  
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]   
at iwebz.XSSFilter.doFilter(XSSFilter.java:21) [classes:]   
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]     
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]     
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:397) [jbossweb-7.0.13.Final.jar:]  
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final-RECOMPILE.jar:7.1.1.Final]  
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]   
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]     
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]  
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]    
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]     
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]

【问题讨论】:

【参考方案1】:

问题已解决。 wildfly lib 文件夹中存在同一个 jar 的不同版本,因此存在问题。 一个 jar 的名称为 poi.jar,并且相同的 poi 文件存在于 org.eclipse.birt.runtime_4.2.1.v20120918-1113.jar

【讨论】:

以上是关于将数据从 oracle DB 转储到 excel 时出错 - java.lang.NoSuchMethodError: org.apache.poi.hssf.record.BOFRecord.set的主要内容,如果未能解决你的问题,请参考以下文章

oracle导入问题

怎么把数据从oracle11迁到oracle12

我可以将 AS400 上的 DB2 数据库转储到 Windows 或 Linux 吗?

在delphi中如何将查询结果导出到excel中

如何用java将excel导入oracle

SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡