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依赖包下如:

  
            org.apache.poi
            poi
            3.10-FINAL
        
        
            org.apache.poi
            poi-ooxml
            3.10-FINAL
        

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()
    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()
    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

 

你可能感兴趣的:(java后端)