POI导出excel提示ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils

来源:互联网 发布:mysql timestamp 编辑:程序博客网 时间:2024/05/29 14:15

POI导出excel提示ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils


这是我自己的代码提示的异常信息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/digest/DigestUtils
at org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture(HSSFWorkbook.java:1798)

Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more


想用poi导出图片,jxl只支持png格式,所以考虑用poi。在测试的时候提示这个异常。


经过测试,我使用的是poi3.15版本,运行就会报错,换成poi3.8版本就没有问题。
首先解决ClassNotFoundException问题,很显然是缺少jar包。
导入相关jar包:
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>3.15</version>
</dependency>
<dependency>
   <groupId>org.apache.directory.studio</groupId>
   <artifactId>org.apache.commons.codec</artifactId>
   <version>1.8</version>
</dependency>
问题依然存在。可以看到我的jar包已经导入成功了,但是还是找不到class.(maven管理的jar包在class  path 里面可以看到),实在不确定,可以在类里面使用import进行测试。
如:import org.apache.commons.codec.digest.DigestUtils;会提示报错,找不到对应的jar里面。
因此推断问题在jar包上。我在mvnrepository的网站上只找到1.8版本的org.apache.commons.codec-1.8.jar,但是搜索DigestUtils的时候在apache的官网发现有个1.10的Class,如下: http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html ,但是找不到1.10的jar包,只好使用源码进行测试,源码下载 :http://commons.apache.org/proper/commons-codec/download_codec.cgi
把源码拷贝到项目中,运行导出代码,excel导出成功。问题解决。
原因为版本问题。poi3.15要使用org.apache.commons.codec-1.10.jar


0 0