Intellij IDEA中Apache POI的依赖性问题。错误不一致

问题描述 投票:1回答:1

概观

所以我一直在尝试使用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都在外部库中!

我试过的

现在虽然这是一个明显的依赖性问题,我已经尝试了几乎所有maven依赖关系的组合,如其他类似的SO问题所建议的,以及检查所有官方的POI Component Information和FAQ。虽然我似乎正在做所有事情,但似乎随机找不到上述两个类中的一个。下面是我的环境的一些图片,可能有助于调试依赖性问题!

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

它在日蚀中工作!如果有人有兴趣研究一个奇怪的问题,我仍然不会改变我想在Intellij环境中解决这个问题的事实。

java excel maven intellij-idea apache-poi
1个回答
0
投票

在经历了一系列死胡同之后,问题的根本原因似乎是我的Java 8 JRE安装包含两个POI JAR,原因有些奇怪。从我的JRE中删除JAR和清理引用后它正常工作!对于任何似乎遇到类似问题的人,请访问<JDK_HOME>/jre/lib/<JDK_HOME>/jre/lib/ext以找到要删除的相应POI JAR,然后在Intellij中删除您的JRE引用,然后将其添加回去。在快速构建/重建之后,它应该按预期工作!

© www.soinside.com 2019 - 2024. All rights reserved.