java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/ExtendedColor
java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/ExtendedColor
我正在尝试从 Spring Framework 中的 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)
有帮助吗?
将评论提升为答案 - 您的 POI 罐子不匹配。 Apache POI 有几个不同的 jar,涵盖 different project components. As explained in the POI FAQ, these must all be from the same version!不支持在不同版本之间混合 jar,并且失败并出现类似这样的错误
快速修复 - 删除所有 Apache POI jar,只添加最新版本的。
如果您无法弄清楚您实际使用了哪些 jar,use the code given in this FAQ entry 通过类加载器报告使用了哪些 jar。然后,删除旧的,这样你最终只会从一个版本中获得一组一致的 POI jar
之后,考虑使用 Apache Maven 或 Apache Ant 或 Groovy 的 Gradle 来为您处理构建过程和依赖项。这些负责为您提供一致的集合,避免您在类路径上随机放置不兼容的 jar 时发现的问题!
我正在尝试从 Spring Framework 中的 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)
有帮助吗?
将评论提升为答案 - 您的 POI 罐子不匹配。 Apache POI 有几个不同的 jar,涵盖 different project components. As explained in the POI FAQ, these must all be from the same version!不支持在不同版本之间混合 jar,并且失败并出现类似这样的错误
快速修复 - 删除所有 Apache POI jar,只添加最新版本的。
如果您无法弄清楚您实际使用了哪些 jar,use the code given in this FAQ entry 通过类加载器报告使用了哪些 jar。然后,删除旧的,这样你最终只会从一个版本中获得一组一致的 POI jar
之后,考虑使用 Apache Maven 或 Apache Ant 或 Groovy 的 Gradle 来为您处理构建过程和依赖项。这些负责为您提供一致的集合,避免您在类路径上随机放置不兼容的 jar 时发现的问题!