我正在使用servlet将.xls
(Excel Spreadsheets)文件上传到服务器。我正在使用Apache FileUpload API作为业务逻辑的上传部分,为了确保这部分天气正常工作,我已成功尝试将.txt文件上传到Servlet,之后是来自servlet端的Apache FileUpload API给我一个InputStream
,我将.txt
的所有内容打印到控制台上。
不工作的部分是,当我尝试使用InputStream
并将其转发到一种方法时,我扫描用户上传的.xls
文件并将其打印在控制台上。抛出的异常是:
java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory
尽管我已将poi-3.5-FINAL-20090928.jar
和poi-ooxml-3.5-FINAL-20090928.jar
都添加到Java项目构建路径中,但仍会发生这种情况。应该提到的是后一个文件包含WorkbookFactory
类。
然而,当我尝试扫描本地存在于硬盘驱动器上的.xls文件时,我从中导出InputStream
并转发它以打印.xls
的所有单元格,在控制台上完美地显示每行和每列上的单元格。有解决方案吗
答案 0 :(得分:2)
您正在使用Apache Commons FileUpload,这意味着您正在使用Web应用程序。您是否将库放在webapp的/WEB-INF/lib
文件夹中,正如您通常应该为任何第三方库所做的那样?您无需对Java Project Build Path执行任何操作。 Eclipse将自动获取构建路径中/WEB-INF/lib
中的任何库,一旦部署,web应用程序将默认将这些库带入类路径中。
如果这没有帮助,那么请确保在类路径中没有其他地方的旧版本POI,这可能会导致类加载。这包括除了每个appserver /WEB-INF/lib
下的webapp /lib
(可能还有其他人,具体取决于make / version / configuration,请参阅文档以获取详细信息)和JRE /lib
。如果那里有较旧的POI版本,则需要先将其删除。实际上,这些文件夹不应包含任何第三方特定于webapp的库,它只会使类路径混乱。
答案 1 :(得分:0)
解决方案非常简单:
就是这样,你已经完成了......:D 如果这可以解决您的问题,请告诉我。