我使用iText 5.5.0
和BouncyCastle bcprov-jdk15on-1.50
对pdf进行数字签名。如果我在MakeSignature.signDetached
方法中没有包含时间戳,那么一切正常。
当我使用TSAClient
指定TSAURL
时,我的代码会给我错误
java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable at MakeSignature.signDetached method
即使我处理了异常,我的程序也会被终止。
我尝试了不同版本的bouncycastle jar,但是我发现同样的错误,并没有找到类别中的差异。
我真的需要在签名中包含时间戳。我该怎么办。
答案 0 :(得分:3)
您可以在以下网址检查itext 5.5的依赖关系。
http://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.0
根据这个页面,itext 5.5的bouncycastle的相应版本是1.49。我在互联网上的某个页面上看到bouncycastle发生了很大的变化,而且通常很难找到特定版本的itext的相应版本的bouncycastle。
答案 1 :(得分:1)
请从下面给出的链接下载 bcprov-jdk15on-150.jar (对于JDK 1.5 - 1.7)文件并添加到您的项目中以解决 java.lang.NoClassDefFoundError:org / bouncycastle / asn1 / ASN1Encodable 例外。
http://www.bouncycastle.org/latest_releases.html
根据您的JDK版本从上面的链接中找到相应的jar文件。
答案 2 :(得分:0)
在项目中包含iText的推荐方法是使用Maven。然后,Maven将为您解决依赖关系。我读到你使用Eclipse,Eclipse有一个非常好的Maven插件。
将其放入pom.xml
:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.8</version>
</dependency>
提供更多信息