从依赖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.15find它。 不知道为什么?

也许有人可以帮我解决这个问题。

有关项目的更多细节: – ide:eclipse neon.1 | – 这是e4项目 – java 8

由于XSSFWorkbook在OOXML架构上工作,因此它会从poi.ooxml jar中加载Workbook类。 你可能会得到这个错误,因为在运行时也需要xmlbeams jar作为依赖。

更新

commons-loggingcommons-codeccommons-collectionslog4j jar也是poi所必需的。 请检查您是否已经导入它们。 所有这些jars都已经在您可能已经下载的poi-bin-3.15-20160924文件中。 请参阅此页面以了解各种组件的先决条件。

希望这可以帮助!!

该库可能有其他运行时依赖需要第二种情况。 你可以尝试将项目设置为maven项目吗? 它应该解决你的问题,因为maven也照顾你明确定义的库的依赖关系。