我用Apache的poi读取word文件,开始在main方法中测试通过,完全没有问题,但是发布到web项目中,
报错。
java.lang.NoSuchMethodError: org.apache.poi.poifs.filesystem.POIFSFileSystem.getRoot()Lorg/apache/poi/poifs/filesystem/DirectoryNode;
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:157)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:145)
at com.ozt.common.WordForQuestion.addSelectQuestionByWord(WordForQuestion.java:174)
at com.ozt.common.upload.QuestionsUploaded.processRequest(QuestionsUploaded.java:94)
at com.ozt.common.upload.QuestionsUploaded.doPost(QuestionsUploaded.java:141)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
is=new FileInputStream(file);
HWPFDocument poiDoc=new HWPFDocument(is);
List picList=poiDoc.getPicturesTable().getAllPictures();
Range rang=poiDoc.getRange();
for(int i=0;i<picList.size();i++){
if(i>=picList.size()/2){
break;
}
Picture picture=(Picture)picList.get(2*i);
String picName = picture.suggestFullFileName();
String picPath=picBasePath+picName;
os=new FileOutputStream(picPath);
picture.writeImageContent(os);
picPath="<img src=\""+picPath+"\"align=\"middle\" />";
picAddr.add(picPath);
}