我正在开发一个java-web-start应用程序,它使用java POI读取excel文件。我的问题是每当我运行我的代码时它都会返回错误。
Exception in thread "Thread-13" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory
at digicare.tracking.serial.BulkUpload.UploadProgress$1read2.run(UploadProgress.java:89)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
这是我的代码:
try {
InputStream inp = new FileInputStream(FilePath);
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
int maxrows = sheet.getPhysicalNumberOfRows();
for (int r = 1; r < maxrows; r++) {
Thread.sleep(1000);
lblCurrentRow.setText(String.valueOf(r));
prbProgBar.setValue(r);
txtOutPut.append(String.format("Done!!\n"));
}
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:1)
之前我遇到过这个,实际上不仅要添加一个jar文件,还有另一个jar文件,名为:poi-ooxml-x.jar(其中x是版本),这个文件包含WorkbookFactory,而不是poi-x.jar,你必须包括它们两个
----------------------------------------------------------------------------
修改强> 我做了一些研究,我认为你的类路径问题与你的项目是一个java web start应用程序有关:
我可以依赖Manifest文件中的Class-Path吗?
Java Web Start不支持清单中的Class-Path条目 文件。 Class-Path属性完全以文件为中心,与Java相同 Web Start和JNLP是以Web为中心的,即基于URL。因此,这两个 模型不易合并。
您可以列出多个JAR,而不是依赖Class-Path条目 JNLP文件中的文件,例如:
<resources> <jar href="A.jar"/> <jar href="B.jar"/> </resources>
这是我找到它的链接:http://webstartfaq.com/#52
答案 1 :(得分:0)
看起来无法找到WorkbookFactory。假设您已将Apache POI jar放在构建路径中。你能看到它自己的jar文件中是否有org.apache.poi.ss.usermodel.WorkbookFactory类吗?
答案 2 :(得分:0)
答案 3 :(得分:0)
你错过了一些POI罐子。具体来说,你肯定错过了poi-ooxml
jar,但你可能也会遗漏其他一些......
Apache POI提供a handy page listing components, their jars and their dependencies。正如该页面所解释的那样,如果您想使用常见的org.apache.poi.ss.usermodel
类(例如WorkbookFactory),您需要主POI jar,POI-OOXML jar及其各自的依赖项。
如果你添加这两个罐子和their dependencies,和/或切换到maven并根据poi
加poi-ooxml
列出你的项目,那么你将拥有所需的课程