2009-11-25 79 views
1

我正在使用servlet將.xls(Excel Spreadsheets)文件上傳到服務器。我使用Apache FileUpload API作爲業務邏輯的上傳部分,爲了確保這部分工作正常,我已經成功地嘗試將.txt文件上載到Servlet,然後從Servlet一側上載Apache FileUpload API給我一個InputStream,我將其中的.txt的所有內容打印到控制檯上。儘管我添加了正確的Apache POI .jar文件,但Eclipse拋出ClassNotFoundException?

這是不是就是工作的時候,我嘗試使用InputStream,並將其轉發到其中,我掃描用戶上傳的.xls文件,並打印在控制檯上的方法的一部分。被拋出的異常是:

java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory 

出現這種情況,儘管已增加兩,poi-3.5-FINAL-20090928.jarpoi-ooxml-3.5-FINAL-20090928.jar我到Java項目構建路徑。應該提到後者文件包含WorkbookFactory類。當我試圖掃描本地存在於硬盤驅動器上的一個.xls文件時,我從其中導出了InputStream,並轉發打印.xls的所有單元格,然後打印出每行的單元格,列在控制檯上完美無瑕。任何解決方案

+0

當你掃描你的「本地存在」文件,你在同一個進程中運行/類路徑? – pstanton 2009-11-25 02:09:24

+0

此外,就在掃描之前,執行System.out或Class.forName(「org.apache.poi.ss.usermodel.WorkbookFactory」)的日誌並查看該類是否存在於類路徑中。 – pstanton 2009-11-25 02:10:39

回答

2

您正在使用Apache Commons FileUpload,這意味着您使用的是Web應用程序。您是否將這些庫放置在webapp的/WEB-INF/lib文件夾中,就像您通常應該爲任何第三方庫一樣?您不需要對Java Project Build Path做任何事情。 Eclipse會自動在構建路徑中取/WEB-INF/lib中的任何庫,並且一旦部署,web應用程序默認將在類路徑中使用這些庫。

如果這沒有幫助,那麼確保在類路徑中沒有其他地方存在舊版本的POI,這可能會在類加載中起作用。這包括除了web應用程序的/WEB-INF/lib之外的每個應用程序服務器的/lib(也可能是其他版本,取決於版本/配置,請參閱文檔以獲取詳細信息)以及JRE的/lib。如果那裏有較舊的POI版本,則需要先將其刪除。實際上,這些文件夾不應該包含任何第三方webapp專用庫,它只會混亂類路徑。

+1

「automagically」 - 好詞:) – Catfish 2009-11-25 03:37:32

0

對於這個解決方案很簡單:

  1. 下載所有在這個環節http://archive.apache.org/dist/poi/release/bin/poi-bin-3.9-20121203.zip
  2. jar文件解壓縮文件,並複製所有jar文件「\的WebContent \ WEB-INF \ lib中\ 「在你的項目中。請注意:您必須複製並粘貼到您的ECLIPSE項目中,不要將其粘貼到Windows資源管理器中,或將其作爲外部JAR放入java構建路徑中,因爲它永遠不會工作。

就是這樣,你就大功告成了..:d 請讓我知道,如果這個解決您的問題..

+0

謝謝,這有助於解決我的問題! – eaglei22 2013-10-15 21:49:41

相關問題