【问题标题】:Java read docx issueJava读取docx问题
【发布时间】:2021-10-01 22:47:39
【问题描述】:

我正在尝试使用 Java 读取 docx 文件,但由于某种原因,经过 3 天的错误尝试后,我仍然无法弄清楚代码发生了什么。 正如我所说,这是一个非常简单的代码,它读取 docx 文件。

代码:

 public static void main(String[] args)throws Exception
        {
           XWPFDocument docx = new XWPFDocument(new FileInputStream("C:\\Users\\new_marks.docx"));
           
           //using XWPFWordExtractor Class
           XWPFWordExtractor we = new XWPFWordExtractor(docx);
           System.out.println(we.getText());
        }

错误信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/util/POILogFactory
    at org.apache.poi.ooxml.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:55)
    at meu_docx_reader.Meu_DOCX_reader.main(Meu_DOCX_reader.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.util.POILogFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 2 more

我一遍又一遍地添加和删除 jar 文件……但不知道这是怎么回事。 我正在使用 Eclipse。

【问题讨论】:

  • 您的依赖项中有 Apache POI 吗?您使用的是 Maven 还是 Gradle?
  • 嗨...感谢您的快速回复。我不知道如何使用 Maven,对不起。 :-) 关于依赖关系,我只是将 jar 文件添加到我的项目中。
  • 您确定它们添加正确吗?如果您在代码中的某处使用POILogFactory,它是想将库导入类还是根本不知道它是什么?
  • 非常感谢。我正在重做,第 n 次,我的 lilipudian 项目。让我们看看它现在是否有效。 :-)

标签: java apache-poi docx


【解决方案1】:

呜呜呜…… 经过4天和很多帮助...... 谢谢你们! 辍学和鹅...

如果其他人也需要它,我会这样做:

1-) 我在我的 Eclipse 中安装了 Maven。 Eclipse -> 帮助 -> 安装新软件。 展开“协作”标签。 从那里选择 Maven 插件。 点击下一步。 接受协议并点击完成。 (Maven in Eclipse: step by step installation)

2-) 我创建了一个全新的项目(第 11 次)...... 但是这次使用本教程: https://www.youtube.com/watch?v=Rh0vYwJ8RTM

3-) 在我的 pom.xml 文件中 我补充说:

 <dependencies>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
  </dependency>
  </dependencies>

4-) 最后一步:我通过使用导入选项解决了我需要的所有导入:

import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

【讨论】:

  • 它还活着!!!谢谢你们!在这里非常兴奋...... Cherio!
  • 很高兴您解决了它。这就是为什么人们会经常推荐 Maven、Gradle 或类似的 依赖管理器 工具的原因。您的 POM 中有一个库 (poi-ooxml)。 Maven 会为您下载。它会下载该库所依赖的所有库。它会下载这些库所依赖的所有库……依此类推,直到您拥有所需的每个库——即使您不知道自己需要它们。所有这些都来自您 POM 中的那个条目。
  • 非常感谢...我的生活现在可以在 Maven 之前和之后恢复... ;-)
【解决方案2】:

您的项目中缺少Apache POI 库。尝试按照本指南导入 JAR:How to import a jar in Eclipse

未来考虑使用一些构建自动化以更有条理的方式管理您的依赖项 - https://stackify.com/gradle-vs-maven/

【讨论】:

  • 非常感谢。我马上就读了。但是,如何确切地知道我需要 b4hand 哪些依赖项?
  • 所以...同样的错误...不知道发生了什么...我按照步骤操作,同样的事情...我选择“添加外部 jars”到我的构建路径。
  • 很难说发生了什么。当您使用 POILogFactory 时,它会尝试在您使用它的类中创建导入,还是只是将其标记为未知?
  • 实际上 Apache POI 5.0.0 需要一堆依赖项 - 请参阅 mvnrepository.com/artifact/org.apache.poi/poi/5.0.0 并向下滚动到“编译依赖项”。尝试添加它们以查看它是否可以解决您的问题问题,但坦率地说,我强烈建议您开始使用 Maven 或 Gradle 以避免将来出现这种混乱。这只是一件麻烦事,使用构建自动化使它变得容易 1000 倍,因为它会自动下载必要的子依赖项。
  • @LeeAndrew sorry 一直离线,看看这篇教程如何使用 maven baeldung.com/maven
猜你喜欢
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2011-09-03
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多