2010-11-17 72 views
0

我已經寫了一個程序,它從csv文件讀取輸入並且其工作正常。我按照以下方式讀取csv文件的輸入流。使用POI jar文件讀取Excel文件

BufferedReader br=new BufferedReader(new InputStreamReader(item.getInputStream())); 

現在我正在改變程序,以便從excel文件中讀取輸入。所以我將代碼更改爲這種格式,編譯時沒有錯誤。

POIFSFileSystem ps = new POIFSFileSystem(item.getInputStream()); 
HSSFWorkbook workbook = new HSSFWorkbook(ps); 

但在提交的JSP頁面中,我得到以下錯誤。什麼是問題,哪裏出了問題?請指教。

javax.servlet.ServletException: Servlet execution threw an exception 

root cause 

java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/POIFSFileSystem 
Readcsvv.doPost(Readcsvv.java:120) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

回答

0

看起來您已經忘記將POI庫包含在CLASSPATH上(例如,它未被您的Web應用程序引用)。您可以將此lib包含在WEB-INF/lib下(以WAR文件或展開的目錄格式),或者可以放在應用服務器/ Web服務器的其他位置。CLASSPATH

+0

我已經在類路徑中包含庫...因此我沒有得到任何編譯錯誤。 – Anand 2010-11-17 15:34:04

+0

我的意思是你的運行時CLASSPATH不是你的編譯時CLASSPATH。假如你使用的是WAR,那麼這個庫需要打包在你的WAR中(在WEB-INF/lib下)。 – 2010-11-17 16:01:40

+0

謝謝....我沒有想到你說的方式:)現在它工作正常。 – Anand 2010-11-17 16:49:58

1

您的POI jar不在類路徑中。把它們放在WEB-INF/lib文件夾中。
另一個不太可能的原因可能是您的罐子版本與預期不同。