'类“org.bouncycastle.asn1.ASN1Primitive”的签名者信息与同一包中其他类的签名者信息不匹配'使用Itext

Rog*_*cia 5 java pdf spring itext maven

我正在开发一个小工具来为PDF加水印,它适用于一些PDF,而其他一些崩溃

我正在使用iText库和 bouncycastle(依赖项)

pom.xml:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.49</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

它在这一行(代码的第一行)崩溃

PdfReader reader = new PdfReader(src);
Run Code Online (Sandbox Code Playgroud)

使用以下堆栈跟踪:

Exception in thread "main" com.itextpdf.text.exceptions.InvalidPdfException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:727)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
... <from here it points to my code>
Run Code Online (Sandbox Code Playgroud)

我已经做了一些谷歌搜索,有些人说可能问题是我在某处复制了这个bouncycastle lib

这是在使用Maven构建的Spring应用程序中。那么,这真的是图书馆的问题吗?

我正在使用JDK 1.8

我试过的

  • 使用 Maven 的不同 bouncycastle 版本。
  • 不同的 bouncycastle 版本(支持我的 JDK 版本)手动添加到项目中(包括 iText)。

但是行为完全相同,一些 PDF有效总是),而另一些则不曾经)。

您是否曾在使用iText库时遇到过与此类似的问题?

问题 PDF格式文件,使代码崩溃在我的项目,而不是

我完全被困在这里,所以任何帮助/提示将不胜感激。提前致谢。

Rog*_*cia 5

感谢Bruno Lowagie 的评论以及链接的问题和mkl提示,我发现了问题。

在我的构建路径中,有两个 org.bouncycastle 库,一个是我通过 Maven 添加的( bcprov-jdk15on.jar),另一个是 Pivotal TC Server 使用的( com.springsource.org.bouncycastle.jce-1.46.0.jar)。

我已经删除了Pivotal TC Server bouncycastle jar 错误已经消失

关键的充气城堡罐子在那里

使用 STS,我无法删除它,因此我在文件系统上找到了它,并将其从 Pivotal TC 预期的文件夹中移出。然后,该库在 STS 消失了。

为了以防万一,我没有删除它,只是移动到另一个目录。如果从现在开始我对 Pivotal TC 有问题,我会更新我的答案。