概述
所以我一直在尝试使用 Apache POI 解析 Excel .xlsx 文件,然后使用 Apache PDFBox 输出 PDF 文件。 PDFBox 部分在我的 Intellij 环境中运行良好,但 POI 部分则不然......
问题
当我运行该程序时,我会得到 p>
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
或
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
在行
XSSFWorkbook workbook = new XSSFWorkbook(new File("MY_FILE.xlsx"));
尽管所有 JAR 都在外部库中!
我尝试过的
现在,虽然这是一个明显的依赖关系问题,但我已经尝试了其他类似 SO 问题所建议的几乎所有 Maven 依赖关系组合,并检查了所有官方 POI Component Information和常见问题解答。尽管我似乎所做的一切都是正确的,但似乎只是随机找不到上述两个类之一。下面是我的环境的几张图片,可能有助于调试依赖问题!
编辑 1
不幸的是,我已经尝试从“org.apache.poi:ooxml-schemas:1.3”maven 依赖项中删除“xmlbeans-2.3.0.jar”,只保留其他 jar 并整体删除该依赖项,但没有成功。另外,这不是 Intellij maven 项目,所以我的项目目录中没有 pom.xml 。我的项目使用 Intellij 的内置依赖项管理,它允许我从给定资源位置的 Maven 添加依赖项。
编辑2
即使从 the Apache POI site 下载二进制文件后然后将所有 JAR 直接添加到我的环境中(根本没有 Maven),仍然存在如上所述的相同问题。见下文...
堆栈跟踪:
编辑3
它在 eclipse 中工作!!!如果有人有兴趣研究一个奇怪的问题,我仍然想在我的 Intellij 环境中解决这个问题,这一事实仍然没有改变。
最佳答案
我遇到了同样的问题,并设法通过以下方式修复 IntelliJ。
我的情况:
尝试从需要 XSSFWorkbook(file) 的 Excel 文件 (.xlsx) 中读取
使用 IntelliJ 并拥有 Maven 项目
修复 就我而言,缺少依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
确保同时具有 poi-ooxml 和 commons-collections 依赖项。
示例代码:
FileInputStream file = new FileInputStream(new File(excelPath));
// excelPath is just my projects path to the excelfile
XSSFWorkbook workbook = new XSSFWorkbook(file);
这导致了 NoClassDefFoundError 和 ClassNotFound 异常。
在这里找到我的解决方案:https://stackoverflow.com/a/42177855/15965319
关于java - Intellij IDEA 中 Apache POI 的依赖关系存在问题。不一致的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170551/