【问题标题】:I am getting java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive error我收到 java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive 错误
【发布时间】:2014-11-18 10:22:21
【问题描述】:

我想使用 itextpdf.5.4.1 下载 pdf 文件并将其转换为纯文本。对于其中大多数,我的代码有效,但对于其中一个,我在尝试读取文件时遇到了以下错误。

PdfReader reader = new PdfReader(pdf_file_path);


Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive

是不是表示这个pdf是受保护的,没有办法提取文字?

【问题讨论】:

  • 你确定你的意思是 [javascript],而不是 [java]?
  • 感谢@mkl。我编辑了它。
  • 请将适当版本的 bouncycastle 放入您的类路径
  • 与同一包中其他类的签名者信息不匹配 - 检查您的类路径上是否有多个 bc 版本。该错误可能是由不同版本的混合引起的。

标签: java pdf itext bouncycastle text-extraction


【解决方案1】:

我在使用 itext 5.5.10 阅读 pdf 时也遇到了同样的问题。

我将依赖项更改为以下内容:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.4</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.49</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.49</version>
    </dependency>

您也可以参考:https://stackoverflow.com/a/27575336/3150912

【讨论】:

  • 5.5.4 比 5.5.10 倒退了一大步。此外,这种降级是不必要的。
  • @mkl 我再次回到 5.5.10 进行了尝试,它可以工作。谢谢建议
【解决方案2】:

这是您项目中不同版本的 itext 的原因。 请在构建文件中检查您的依赖项。

【讨论】:

  • 如果您阅读了该问题的 cmets,您会知道它不是关于不同的 iText 版本,而是最初是错误的,后来是不同的 BouncyCastle 版本。跨度>
  • bouncycasle lib 肯定包含上述类,但通常没有明确使用它。我的意思是,也许这与 Itext(com.itextpdf 或 com.lowagie.itext)库的依赖有关
  • 还有一件事:目标库可以在父 pom.xml 中标记为可选(如果你使用 Maven),所以有时你必须添加像 org.bouncycastle (bcprov) 这样的库明确的方式进入你的项目。
猜你喜欢
  • 2014-04-26
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2020-11-15
  • 2022-11-02
相关资源
最近更新 更多