iText / BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable and org.bouncycastle.tsp.TimeStampTokenInfo
我正在尝试使用iText Java。 当您运行示例“ 如何签名 ”时,会发生以下错误:
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.tsp.TimeStampTokenInfo
根据“iText入门 – 如何使用iText签署PDF” ,我必须使用BouncyCastle 。
我从BouncyCastle下载页面下载了文件:bcprov-jdk15on-147.jar 。
并添加到项目中:Java Build Path / Libraries / Add External JARs …
我添加了以下行:
Security.addProvider(new BouncyCastleProvider());
运行该示例时,会发生相同的错误。
所以我下载了另一个文件:bcpkix-jdk15on-147.jar,标题为“PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL”
并添加到项目中:Java Build Path / Libraries / Add External JARs …
现在我有两个jar子。
运行该示例时,会发生以下错误:
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable
我尝试下载文件“bcprov-ext-jdk15on-147.jar”但没有解决问题。
我在Windows 7 64位上使用iText 5.2.1和eclipse。
BouncyCastle库正在进行大量的API更改,这破坏了与iText等其他库的兼容性。
或
-
使用以前版本的BouncyCastle库。 旧版本可以在这里找到。 但是,您必须找到与此特定版本的BC兼容的正确版本的iText。
-
制作自己的iText版本(已修复SVN中继)。 可以使用Maven构建iText(SVN的根目录下有一个简短的自述文件 )。 请注意,由您自行承担风险,主干可能存在错误。
-
等待下一版iText。 根据我的经验,iText发布每两个月发布一次,有时更频繁,有时更少。 我不是iText提交者,所以我不能给你任何ETA。
可以在此主题中找到更多信息
iText将bouncycastle依赖项标记为可选。 如果需要它们,则需要在自己的pom文件中添加依赖项。
要找出要包含在项目中的依赖项,请打开您正在使用的版本的itextpdf pom.xml文件(例如5.3.2, 此处 )并搜索2个bouncycastle依赖项。
org.bouncycastle bcprov-jdk15on 1.47 true org.bouncycastle bcmail-jdk15on 1.47 true
将它们复制到您的pom文件中并删除可选选项。
com.itextpdf itextpdf 5.3.2 org.bouncycastle bcprov-jdk15on 1.47 org.bouncycastle bcmail-jdk15on 1.47
使用itextpdf版本5.5.4 org.bouncycastle依赖项标记为
。 这意味着你必须在你自己的pom中包含这些依赖项,或者你可以遇到classnotfoundexception。
com.itextpdf itextpdf 5.5.4 org.bouncycastle bcprov-jdk15on 1.49 org.bouncycastle bcpkix-jdk15on 1.49
从bcprov-jdk15on-147的版本开始,在org.bouncycastle.asn1的路径下不再存在DEREncodable类。 您可以使用146之前的版本(包括146)来解决此问题。
奇怪的是,bouncycastle.org上的jar子似乎不包含这个类。 也许,您可能想要使用此页面中列出的位置(链接) 。
我有同样的问题,但当我下载libreria并在/ WEBINF / LIB上更新这些文件时修复它
对于同样失败的jruby-ers,我从jruby-complete-1.6.6.jar更新到jruby-complete-9.1.13.0.jar,问题似乎解决了… FWIW ……
- Java – 抛出IOException的原因
- 类抛出exception
- 运行axis2客户端版本1.5
- EJB3.1系统exception与javax.ejb.EJBException
- 线程“main”java.util.NoSuchElementException中的exception
- Java Jackson:反序列化复杂的多态对象模型:JsonMappingException:意外的令牌(START_OBJECT),预期的VALUE_STRING
- 带有监听器的JavaFX Textfield给出:“java.lang.IllegalArgumentException:start必须<= the end”
- 获取exceptionorg.apache.logging.slf4j.SLF4JLoggerContext无法强制转换为org.apache.logging.log4j.core.LoggerContext
- 当访问的属性或方法暂时不可用时抛出什么exception?