java.lang.NoClassDefFoundError:org / apache / poi / ss / usermodel / ExtendedColor

我试图从Spring框架中的Web应用程序中导出一个Excel文件。 首先,我以XLS格式完成了这个工作。 现在,我正在尝试在XLSX格式中做同样的事情。 为此,我将HSSFWorkbook等一些类更改为XSSFWorkbook,或将HSSFSheet更改为XSSFSheet。

问题出在这个来源的第三行:

XSSFCellStyle estiloFecha = workbook.createCellStyle(); estiloFecha.cloneStyleFrom(estiloNormal); estiloFecha.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("dd/MM/yyyy hh:mm")); 

错误是:

 org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/ExtendedColor org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:859) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:754) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:399) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:354) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:723) net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:185) net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:159) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264) org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:193) org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) 

一些帮助?

提出一个答案的评论 – 你有不匹配的兴趣点jar子。 Apache POI有几个不同的jar子,涵盖了不同的项目组件 。 正如POI常见问题中所解释的那样,这些必须全部来自相同的版本 ! 不支持在版本之间混合使用jar,并且像这样失败

快速修复 – 删除所有的Apache POIjar子,只添加最新版本的jar子。

如果您无法弄清楚您实际使用的是什么jar子,请使用此FAQ条目中给出的代码,通过类加载程序报告所使用的jar子。 然后,删除旧的,所以你只能从一个版本中得到一套一致的POIjar子

之后,考虑使用Apache Maven或Apache Ant或Groovy的Gradle等来处理您的构build过程和依赖关系。 那些照顾到你一个一致的设置,避免你发现在你的类path上抛出随机不兼容jar的问题!