java - Intellij IDEA 中 Apache POI 的依赖关系存在问题。不一致的错误

标签 java excel maven intellij-idea apache-poi

概述

所以我一直在尝试使用 Apache POI 解析 Excel .xlsx 文件,然后使用 Apache PDFBox 输出 PDF 文件。 PDFBox 部分在我的 Intellij 环境中运行良好,但 POI 部分则不然......

问题

当我运行该程序时,我会得到

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和常见问题解答。尽管我似乎所做的一切都是正确的,但似乎只是随机找不到上述两个类之一。下面是我的环境的几张图片,可能有助于调试依赖问题!

Intellij 项目外部库: Dependencies

Intellij 项目结构模块: Compile Dependencies

Intellij 项目结构库: Maven Dependency

编辑 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),仍然存在如上所述的相同问题。见下文...

Intellij 项目外部库: Mavenless

堆栈跟踪:

ST1 ST2

编辑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/

相关文章:

java - Kotlin Android 基本方法不调用

vba - 从网站中提取数据作为单独的字段

c# - 在 C# 中激活数据透视表总计的显示详细信息

java Rest API post方法给出了不允许的HTTP 405方法

java - 使用CXF和maven将源代码注释导出到WSDL?

java - Jetty 8 中的默认配置是否适合负载相当重的 Web 应用程序?

java - Tapestry 中的装订图 5

java - 检查字符串是否包含\n Java

vb.net - 如何更改Excel列宽

java - 现实世界中的 Clojure 和 Java 互操作