poi excel操作报错nosuchmethoderror org.apache.poi.util.poilogger.log

转自:http://blog.sina.com.cn/s/blog_66dddb8b0102xp9s.html

有一个老程序,excel只支持xls格式,不支持2007、2010的xlsx,于是换了jar包并更新了函数。

但是很不幸报错:java.lang.NoSuchMethodError: org.apache.poi.util.POILogger.log(I[Ljava/lang/Object;)V

搜了百度,貌似没有什么人遇到这个问题,不过还好在国外网站发现了解决方法。

这个错误最可能的原因是poi的jar包使用了多个版本,好吧,其实我已经把老jar包从java build path里面删掉了,但是还有这个报错。

有一个可以检测class文件走哪个jar包的代码,很不错,以后迷茫时可以用用,这里粘过来分享下:

ClassLoader classloader =
   org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
             "org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("POI Core came from " + path);

classloader = org.apache.poi.POIXMLDocument.class.getClassLoader();
res = classloader.getResource("org/apache/poi/POIXMLDocument.class");
path = res.getPath();
System.out.println("POI OOXML came from " + path);

classloader = org.apache.poi.hslf.HSLFSlideShow.class.getClassLoader();
res = classloader.getResource("org/apache/poi/hslf/HSLFSlideShow.class");
path = res.getPath();
System.out.println("POI Scratchpad came from " + path);

检测后,发现确实有一个class走了老包,只删java build path没生效。后来把workspace里面的包删了再把project clean一下,然后重新部署,OK,问题解决了!


你可能感兴趣的:(poi excel操作报错nosuchmethoderror org.apache.poi.util.poilogger.log)