【发布时间】:2016-04-06 07:45:37
【问题描述】:
当我从我的代码库调用PdfEncryptor.encrypt() 时,我遇到了上述异常。在 SO 我发现它通常是由于 itextpdf 和 bouncycastle jar 的错误组合而发生的。但我在下面提到
依赖关系,我认为这是正确的。
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.1.3</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
<dependency>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
</dependency>
我们通过其他项目(测试)间接依赖于 itext。 “测试”项目有以下条目
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.0.4</version>
</dependency>
堆栈跟踪:
“org.bouncycastle.asn1.ASN1ObjectIdentifier”类的签名者 信息与其他类的签名者信息不匹配 同一个包 在 java.lang.ClassLoader.checkCerts(ClassLoader.java:952) 在 java.lang.ClassLoader.preDefineClass(ClassLoader.java:666) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:794) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2494) 在 org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) 在 com.itextpdf.text.pdf.PdfEncryption.(PdfEncryption.java:147) 在 com.itextpdf.text.pdf.PdfWriter.setEncryption(PdfWriter.java:2041) 在 com.itextpdf.text.pdf.PdfStamper.setEncryption(PdfStamper.java:295) 在 com.itextpdf.text.pdf.PdfStamper.setEncryption(PdfStamper.java:330) 在 com.itextpdf.text.pdf.PdfEncryptor.encrypt(PdfEncryptor.java:206)
如果您有任何解决方案,请告诉我。会很有帮助的
【问题讨论】:
-
你为什么依赖
com.itextpdf:itextpdf和com.lowagie:itext?回答您的问题:BouncyCastle 是在 iText 的pom.xml中定义的传递依赖项,因此如果您的应用程序不直接使用 BouncyCastle,则无需在自己的pom.xml中定义它。我什至不知道 BouncyCastle 的 9 年历史 版本需要哪个版本的com.lowagie:itext作为依赖项。 -
运行此命令:
mvn dependency:tree -Dverbose | tee depends.txt(在 Linux/OSX 上)或mvn dependency:tree -Dverbose > depends.txt在 Windows 上,并将输出添加到您的问题中。