web-dev-qa-db-fra.com

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

J'essaie d'utiliser iText Java . Lorsque vous exécutez l'exemple " comment signer ", l'erreur suivante se produit:

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

Selon "Démarrer avec iText - Comment signer un PDF à l’aide de iText" , je dois utiliser le BouncyCastle .

J'ai téléchargé le fichier: bcprov-jdk15on-147.jar à partir de la page de téléchargement de BouncyCastle.
Et ajouté au projet: Chemin de construction Java/Bibliothèques/Ajouter des JAR externes ...

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 intitulé "PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL". 
Et ajouté au projet: Chemin de construction Java/Bibliothèques/Ajouter des JAR externes ...
Maintenant, j'ai deux bocaux.

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

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

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

J'utilise iText 5.2.1 et Eclipse sur Windows 7 64 bits.

20
Cobaia

Les bibliothèques BouncyCastle subissent d'importants changements d'API qui ont cassé la compatibilité avec d'autres bibliothèques comme iText.

Non plus

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

  • créez votre propre version de iText (le tronc SVN a été corrigé). iText peut être construit avec Maven (il y a un court fichier readme à la racine du SVN). Veuillez noter que c'est à vos risques et périls, il peut y avoir des bugs dans le coffre. 

  • attendez la prochaine version de iText. D'après mon expérience, les versions d'iText sont publiées tous les deux mois, parfois plus souvent, parfois moins. Je ne suis toutefois pas un auteur d'iText, je ne peux donc pas vous donner d'ETA.

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

19
Alexis Pigeon

iText marque les dépendances de bouncycastle comme facultatives. 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 le fichier itextpdf pom.xml de la version que vous utilisez (par exemple 5.3.2, ici ) et recherchez les 2 dépendances 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 l'option optional

    <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>
27
jehon

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

<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>
14
CorayThan

de la version de bcprov-jdk15on-147, la classe de DEREncodable n’existe plus sous le chemin d’org.bouncycastle.asn1 Vous pouvez utiliser la version antérieure à 146 (dont 146) pour résoudre cette question. 

3
Bill Watson

Il est étrange que les pots disponibles sur bouncycastle.org ne semblent pas contenir cette classe. Peut-être voudrez-vous en utiliser un des emplacements répertoriés dans cette page (lien)

1
srkavin

Heureusement, les pots de dépendance sont livrés avec iText maintenant.

Veuillez vérifier le lien du référentiel ci-dessous et télécharger le fichier extrajars.Zip

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

1
Kıvanç Sahici

j'ai le même problème, mais un problème quand je télécharge la libreria et met à jour ces fichiers sur/WEBINF/LIB

1
Jules

Pour jruby-ers avec le même échec, j'ai mis à jour jruby-complete-9.1.13.0.jar à partir de jruby-complete-1.6.6.jar et le problème semblait résoudre ...

0
rogerdpack