Intellij IDEA中Apache POI的依赖性问题。错误不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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都在外部库中!
我试过的
现在虽然这是一个明显的依赖性问题,我已经尝试了几乎所有maven依赖关系的组合,如其他类似的SO问题所建议的,以及检查所有官方的POI Component Information和FAQ。虽然我似乎正在做所有事情,但似乎随机找不到上述两个类中的一个。下面是我的环境的一些图片,可能有助于调试依赖性问题!
编辑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
它在日蚀中工作!如果有人有兴趣研究一个奇怪的问题,我仍然不会改变我想在Intellij环境中解决这个问题的事实。
在经历了一系列死胡同之后,问题的根本原因似乎是我的Java 8 JRE安装包含两个POI JAR,原因有些奇怪。从我的JRE中删除JAR和清理引用后它正常工作!对于任何似乎遇到类似问题的人,请访问<JDK_HOME>/jre/lib/
或<JDK_HOME>/jre/lib/ext
以找到要删除的相应POI JAR,然后在Intellij中删除您的JRE引用,然后将其添加回去。在快速构建/重建之后,它应该按预期工作!
以上是关于Intellij IDEA中Apache POI的依赖性问题。错误不一致的主要内容,如果未能解决你的问题,请参考以下文章
Apache Camel 和 Intellij Idea 代码格式
使用 IntelliJ idea 的 Scala 工作表作为 Apache Spark 的 Scala REPL
Apache Spark探秘:利用Intellij IDEA构建开发环境
无法从 IntelliJ IDEA 12.1.4 Ultimate (Windows 7) 启动 Apache Tomcat 6