POI 解析excel报错 java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Date1904Support

   前几天做了一个excel上传导入功能,为了通用想同步支持xls和xlsx格式。代码编写期并没有报错,所需要的类也都有。可是应用启动完测式功能的时候报了这么一个错   Caused by: java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Date1904Support  这是为什么呢?我第一感觉是jar包冲突引起的。但是并没有找到同一个包有两个版本, 后来仔细一看poi和poi-ooxml版本不一样。难道是这个问题引导起的便尝试把版本号改为一致的。改了以后还是不行。又折腾了半天,后来发现我改的版本号并没有生效,原来poi maven引用配置在了dependencyManagement里而我改的是dependency里的引用。所以没有起作用。又犯了一个低级错误 。解决这个问题可以总结为以下两点:

    1.引有poi.jar和poi-ooxml.jar两个包版本要一致.

    2.修改maven依赖jar包版本号时要注意找一下jar包版本是否在dependencyManagement管理。如果存在修改dependencys引用里的版本号是不起作用的 。所以如果在dependencyManagement里管理版本号那么dependencys引用的时候就不要再写版本号了。

  如果解析excel同步支持xls和xlsx依赖包下如:

  <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.10-FINAL</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.10-FINAL</version>
        </dependency>

excel上传解析错误

Caused by: java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Date1904Support
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at com.aliyun.devata.cms.web.controller.AdminMessageController.importEmpInfo(AdminMessageController.java:139)
    at com.aliyun.devata.cms.web.controller.AdminMessageController$$FastClassBySpringCGLIB$$baba469f.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651)
    at com.aliyun.devata.cms.web.controller.AdminMessageController$$EnhancerBySpringCGLIB$$4065efb5.importEmpInfo(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    ... 100 common frames omitted

 

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值