iText / BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable et org.bouncycastle.c. à thé de.TimeStampTokenInfo

je suis en train d'utiliser iText Java. Lorsque vous exécutez l'exemple "signe" l'erreur suivante se produit:

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

Selon "prise en main avec iText - Comment signer un fichier PDF avec iText" je dois utiliser le BouncyCastle.

j'ai téléchargé le fichier: bcprov-jdk15on-147.bocal de l' page de téléchargement de BouncyCastle.

Et ajouté au projet: Java Build Path/Bibliothèques/Ajouter Externe Des Bocaux...

j'ai ajouté la ligne suivante:

Security.addProvider(new BouncyCastleProvider());

Lorsque vous exécutez l'exemple, la même erreur se produit.

J'ai donc téléchargé un autre fichier: bcpkix-jdk15on-147.jar entitled "PKIX/CMS/EAC/PKCS/OCSP/TSP / OPENSSL"

Et ajouté au projet: Java Build Path / Libraries / Add External JARs...

Maintenant, j'ai deux Pots.

Lorsque vous exécutez l'exemple, l'erreur suivante se produit:

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

j'ai essayé télécharger le fichier "bcprov-ext-jdk15on-147.jar " mais n'a pas résolu le problème.

j'utilise iText 5.2.1 et eclipse sur Windows 7 64 bits.

20
demandé sur Cobaia 2012-05-01 02:13:31

8 réponses

les libs de BouncyCastle subissent de lourds changements D'API qui ont brisé la compatibilité avec d'autres libs comme iText.

  • utilisez une version précédente des libs de BouncyCastle. Les anciennes versions peuvent être trouvées ici. Cependant, vous devrez trouver la bonne version d'iText qui était compatible avec cette version particulière de BC.

  • faites votre propre compilation d'iText (le tronc SVN a été corrigé). iText peut être construit avec Maven (there is a short fichier readme à la racine de la SVN). Veuillez noter que c'est à vos risques et périls, il peut y avoir des bugs dans le coffre.

  • attendez la prochaine version d'iText. D'après mon expérience, les versions d'iText viennent tous les deux mois, parfois plus souvent, parfois moins. Je ne suis pas un committer iText, donc je ne peux pas vous donner D'heure D'arrivée.

Plus d'informations peuvent être trouvées dans ce fil

19
répondu Alexis Pigeon 2012-05-01 13:02:41

iText marque les dépendances de bouncycastle en tant qu'optionnel. Si vous en avez besoin, vous devez ajouter les dépendances dans votre propre fichier pom.

pour savoir quelle dépendance inclure dans votre projet, ouvrez itextpdf pom.fichier xml de la version que vous utilisez (par exemple 5.3.2, ici) et rechercher les 2 dépendances de bouncycastle.

    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.47</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcmail-jdk15on</artifactId>
        <version>1.47</version>
        <optional>true</optional>
    </dependency>

Copiez - les dans votre fichier pom et supprimez le facultatif option.

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.47</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcmail-jdk15on</artifactId>
        <version>1.47</version>
    </dependency>
26
répondu jehon 2018-09-06 17:55:31

Avec itextpdf version 5.5.4 org.les dépendances de bouncycastle sont marquées comme <optional>true</optional>. Cela signifie que vous devez inclure ces dépendances dans votre propre pom, ou vous pouvez exécuter dans classnotfound exceptions.

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.4</version>
</dependency>

<!-- Bouncycastle dependencies necessary as they are optional = true
    in itextpdf ... but they're not-so-optional in reality -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.49</version>
</dependency>
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcpkix-jdk15on</artifactId>
    <version>1.49</version>
</dependency>
13
répondu CorayThan 2014-12-19 23:28:49

d'après la version de bcprov-jdk15on-147, la classe de DEREncodable n'existe plus sous le path of org.bouncycastle.asn1. Vous pouvez utiliser la version avant 146 (y compris 146) pour résoudre cette question.

3
répondu Bill Watson 2014-04-15 08:32:10

il est étrange que les pots disponibles à bouncycastle.org on ne dirait pas contenir cette classe. Vous voudrez peut-être en utiliser un des endroits énumérés dans cette page (lien).

1
répondu srkavin 2012-04-30 22:32:53

j'ai le même problème, mais un correctif quand je l'ai télécharger la libreria et mise à jour de ces fichiers sur /web-inf/LIB

1
répondu Jules 2013-04-05 23:39:18

heureusement, les pots de dépendances sont livrés en même temps que l'iText.

veuillez vérifier le lien du dépôt ci-dessous et télécharger extrajars.zip le fichier

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

1
répondu Kıvanç Sahici 2014-02-12 10:14:02

pour les JRuby-ers avec la même défaillance, j'ai mis à jour à jruby-complete-9.1.13.0.pot de jruby-complet-1.6.6.jar et le problème semblait résoudre...FWIW...

0
répondu rogerdpack 2017-10-25 05:06:14