从依赖jar中找不到的类
在我的项目中,我使用apache.poi库来处理excel文件。 我有依赖关系:
- apache.poi.ooxml_3.15
- apache.poi_3.15
- apache.poi.ooxml_schemas_3.15
jar子。 所以在编译过程中没有问题。 运行时:
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; ... Workbook workbook2003 = new HSSFWorkbook(); //1 Workbook workbook2007 = new XSSFWorkbook(); //2
第1行工作正常,而第2行引发exception:
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook cannot be found by org.apache.poi.ooxml_3.15.0 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) at java.lang.ClassLoader.loadClass(Unknown Source) ... 41 more
org.apache.poi.ss.usermodel.Workbook
位于apache.poi_3.15
但在运行时jvm试图在apache.poi.ooxml_3.15
find它。 不知道为什么?
也许有人可以帮我解决这个问题。
有关项目的更多细节: – ide:eclipse neon.1 | – 这是e4项目 – java 8
由于XSSFWorkbook
在OOXML架构上工作,因此它会从poi.ooxml
jar中加载Workbook
类。 你可能会得到这个错误,因为在运行时也需要xmlbeams
jar作为依赖。
更新
commons-logging
, commons-codec
, commons-collections
, log4j
jar也是poi
所必需的。 请检查您是否已经导入它们。 所有这些jars
都已经在您可能已经下载的poi-bin-3.15-20160924
文件中。 请参阅此页面以了解各种组件的先决条件。
希望这可以帮助!!
该库可能有其他运行时依赖需要第二种情况。 你可以尝试将项目设置为maven项目吗? 它应该解决你的问题,因为maven也照顾你明确定义的库的依赖关系。