java.lang.NoClassDefFoundError:org / bouncycastle / asn1 / ASN1Encodable

时间:2014-03-19 17:30:29

标签: java exception timestamp itext bouncycastle

我使用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,但是我发现同样的错误,并没有找到类别中的差异。

我真的需要在签名中包含时间戳。我该怎么办。

3 个答案:

答案 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> 

http://developers.itextpdf.com/itext-java

提供更多信息