iText / BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable y org.bouncycastle.tsp.TimeStampTokenInfo

Estoy tratando de usar iText Java. Cuando ejecuta el ejemplo ” cómo firmar “, se produce el siguiente error:

Caused by: java.lang.ClassNotFoundException: org.bouncycastle.tsp.TimeStampTokenInfo 

Según “Comenzando con iText – Cómo firmar un PDF usando iText” , tengo que usar BouncyCastle .

Descargué el archivo: bcprov-jdk15on-147.jar de la página de descarga de BouncyCastle.
Y añadido al proyecto: Java Build Path / Libraries / Add External JARs …

Agregué la siguiente línea:

 Security.addProvider(new BouncyCastleProvider()); 

Cuando ejecuta el ejemplo, se produce el mismo error.
Así que descargué otro archivo: bcpkix-jdk15on-147.jar titulado “PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL”
Y añadido al proyecto: Java Build Path / Libraries / Add External JARs …
Ahora tengo dos jarras.

Cuando ejecuta el ejemplo, se produce el siguiente error:

 Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable 

Intenté descargar el archivo “bcprov-ext-jdk15on-147.jar” pero no resolvió el problema.

Estoy usando iText 5.2.1 y eclipse en Windows 7 64 bits.

BouncyCastle libs están experimentando fuertes cambios API que rompieron la compatibilidad con otras librerías como iText.

Ya sea

  • use una versión previa de BouncyCastle libs. Las versiones antiguas se pueden encontrar aquí . Sin embargo, deberá encontrar la versión correcta de iText que sea compatible con esta versión particular de BC.

  • crea tu propia comstackción de iText (el tronco SVN ha sido reparado). iText puede comstackrse con Maven (hay un archivo léame corto en la raíz del SVN). Tenga en cuenta que es bajo su propio riesgo, puede haber errores en el maletero.

  • espera la próxima versión de iText. Según mi experiencia, las versiones de iText aparecen cada dos meses, algunas veces más a menudo, a veces menos. Aunque no soy un committer de iText, entonces no puedo darte ninguna ETA.

Más información se puede encontrar en este hilo

iText marca las dependencias de bouncycastle como opcional. Si los necesita, debe agregar las dependencias en su propio archivo pom.

Para averiguar qué dependencia incluir en su proyecto, abra el archivo itextpdf pom.xml de la versión que está utilizando (por ejemplo, 5.3.2, aquí ) y busque las 2 dependencias de bouncycastle.

   org.bouncycastle bcprov-jdk15on 1.47 true   org.bouncycastle bcmail-jdk15on 1.47 true  

Cópialos en tu archivo pom y elimina la opción opcional .

   com.itextpdf itextpdf 5.3.2   org.bouncycastle bcprov-jdk15on 1.47   org.bouncycastle bcmail-jdk15on 1.47  

Con itextpdf versión 5.5.4, las dependencias de org.bouncycastle están marcadas como true . Esto significa que DEBE incluir esas dependencias en su propio pom, o puede encontrarse con excepciones de clase desconocida.

  com.itextpdf itextpdf 5.5.4    org.bouncycastle bcprov-jdk15on 1.49   org.bouncycastle bcpkix-jdk15on 1.49  

De la versión de bcprov-jdk15on-147, la clase de DEREncodable ya no existe bajo la ruta de org.bouncycastle.asn1. Puede usar la versión anterior a 146 (incluidos 146) para resolver esta pregunta.

Es extraño que los flasks disponibles en bouncycastle.org no parezcan contener esta clase. Tal vez, es posible que desee utilizar uno de los lugares enumerados en esta página (enlace) .

tengo el mismo problema, pero lo soluciono cuando descargo la libreria y actualizo esos archivos en / WEBINF / LIB

Afortunadamente, los flasks de dependencia se están entregando junto con el iText ahora.

Por favor revise el enlace del repository a continuación y descargue el archivo extrajars.zip

http://sourceforge.net/projects/itext/files/

Para jruby-ers con la misma falla, actualicé a jruby-complete-9.1.13.0.jar de jruby-complete-1.6.6.jar y el problema pareció resolverse … FWIW …