2017-04-04 1 views
2

Je développe un petit outil pour filigrane PDF et il travaille pour certains PDF et se bloque pour certains autres.« classe « org.bouncycastle.asn1.ASN1Primitive » » information du signataire ne correspond pas à l'information signataire d'autres classes dans le même package » en utilisant iText

J'utilise bibliothèque iText et bouncycastle (dépendance)

pom.xml:

<dependency> 
     <groupId>com.itextpdf</groupId> 
     <artifactId>itextpdf</artifactId> 
     <version>5.5.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.bouncycastle</groupId> 
     <artifactId>bcprov-jdk15on</artifactId> 
     <version>1.49</version> 
    </dependency> 

Il accidents à cette ligne (la première ligne de code):

Avec le suivant stacktrace:

Exception in thread "main" com.itextpdf.text.exceptions.InvalidPdfException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package 
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:727) 
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181) 
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219) 
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207) 
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197) 
... <from here it points to my code> 

J'ai fait quelques googler et certaines personnes disent que peut-être le problème est que j'ai ce bouncycastle lib dupliqué quelque part.

C'est à l'intérieur d'une application Spring construire avec Maven . Alors, cela peut-il vraiment être un problème de bibliothèque? J'utilise JDK 1.8.

Ce que j'ai essayé:

  • Différentes versions bouncycastle avec Maven.
  • Différentes versions de bouncycastle (prenant en charge ma version JDK) ajoutées manuellement au projet (y compris iText).

Mais le comportement est exactement le même, certains PDF fonctionne (toujours) et d'autres ne le font pas (jamais).

Avez-vous déjà rencontré un problème similaire à celui-ci en utilisant iText?

Le problème est à les fichiers PDF qui font le crash de code et non dans mon projet?

Je suis complètement coincé ici, donc toute aide/conseil serait appréciée. Merci d'avance.

+1

Les fichiers PDF qui fonctionnent toujours sont ceux qui n'utilisent pas le cryptage de quelque façon que ce soit. Ceux qui ne fonctionnent pas, ils nécessitent BouncyCastle. L'erreur ne dit pas que BouncyCastle est manquant, mais que vous utilisez des jars qui sont signés avec une clé, et d'autres jars qui ne sont pas signés (probablement cause) ou sont signés avec une autre clé. Voir par exemple http://stackoverflow.com/questions/2877262/java-securityexception-signer-information-does-not-match –

+1

Parfois, les classes de bibliothèques sont ajoutées à d'autres artefacts. Ainsi, probablement les paquets bc dupliqués sont dans un pot que vous ne soupçonneriez pas d'être. – mkl

+0

Merci pour votre aide les gars. Je vais enquêter plus loin et mettre à jour quand j'avance dans l'une de ces deux directions. Merci mkl et Bruno. –

Répondre

1

Merci àBruno Lowagie commentaires et questions liées et conseil MKL J'ai trouvé le problème.

Dans mon chemin de construction il étaient deux libs org.bouncycastle, un je ajouté par Maven (bcprov-jdk15on.jar) et un autre celui utilisé par Pivotal TC serveur (com.springsource.org.bouncycastle.jce-1.46.0.jar).

J'ai enlevé le Pivotal TC serveur pot bouncycastle et l'erreur a disparu .

Pivotal bouncycastle jar was there

STS Utilisation Je ne pouvais pas l'enlever, donc je l'ai trouvé sur le système de fichiers et déplacé du dossier Pivotal TC prévu qu'il soit. Ensuite, la lib a disparu à STS.

Je ne l'ai pas supprimé juste au cas où, seulement déplacé vers un autre répertoire. Si j'ai des problèmes avec Pivotal TC à partir de maintenant je vais mettre à jour ma réponse.