2012-04-30 12 views
18

Ich versuche iText Java zu verwenden. Wenn Sie das Beispiel „how to sign“ die folgenden Fehler führen auftreten:iText/BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable und org.bouncycastle.tsp.TimeStampTokenInfo

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

Nach "Getting Started with iText - How to sign a PDF using iText", ich habe die BouncyCastle zu verwenden.

heruntergeladen ich die Datei: bcprov-jdk15on-147.jar von BouncyCastle download page.
und dem Projekt hinzugefügt: Java Build Path/Bibliotheken/External JARs hinzufügen ...

Ich habe die folgende Zeile:

Security.addProvider(new BouncyCastleProvider()); 

Wenn Sie das Beispiel ausführen, tritt der gleiche Fehler auf.
Also habe ich eine andere Datei heruntergeladen: bcpkix-jdk15on-147.jar mit dem Titel "PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL"
Und zum Projekt hinzugefügt: Java Build Path/Bibliotheken/Externe JARs hinzufügen ..
Jetzt habe ich zwei Gläser.

Wenn Sie das Beispiel der folgenden Fehler führen auftreten:

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

Ich habe versucht, die Datei "bcprov-ext-jdk15on-147.jar" herunterzuladen, aber das Problem nicht lösen.

Ich benutze iText 5.2.1 und Eclipse auf Windows 7 64 Bit.

Antwort

19

BouncyCastle-Bibliotheken durchlaufen starke API-Änderungen, die die Kompatibilität mit anderen Bibliotheken wie iText unterbrachen.

Entweder

  • Verwendung eine frühere Version von BouncyCastle Libs. Alte Versionen können here gefunden werden. Sie müssen jedoch die richtige Version von iText finden, die mit dieser speziellen Version von BC kompatibel ist.

  • machen Sie Ihren eigenen Build von iText (der SVN-Trunk wurde behoben). iText kann mit Maven erstellt werden (es gibt eine kurze readme file an der Wurzel des SVN). Bitte beachten Sie, dass dies auf eigene Gefahr geschieht, da sich im Kofferraum Bugs befinden können.

  • warten Sie auf die nächste Version von iText. Aus meiner Erfahrung kommen iText-Veröffentlichungen alle paar Monate, manchmal öfter, manchmal weniger. Ich bin jedoch kein iText-Committer, daher kann ich Ihnen keine ETA geben.

Weitere Informationen hierzu finden in this thread

+0

Was ist dein Vorschlag? Ich habe versucht, den SVN https://itext.svn.sourceforge.net/svnroot/itext zu bekommen, aber ich weiß nicht, wie man kompiliert. Ich habe versucht, eine alte Version von BouncyCastle http://repo1.maven.org/maven2/org/bouncycastle/ ohne Erfolg zu verwenden. – Cobaia

+0

Wenn Sie nicht von der Zeit gedrückt werden, würde ich auf die nächste iText-Version warten. Wenn Sie nicht können, habe ich meine Antwort mit mehr Details bearbeitet ... –

+5

Für iText2.1.7 und Sun JDK 1.7 Diese Verbindung reparierte das DENECodable not_found Problem. http://repo2.maven.org/maven2/org/bouncycastle/bcprov-jdk15%2b/1.46/bcprov-jdk15%2b-1.46.jar –

1

Es ist seltsam, dass die Gläser, die bei bouncycastle.org verfügbar sind, diese Klasse nicht zu enthalten scheinen. Vielleicht möchten Sie eines der in this page (link) aufgeführten Standorte verwenden.

+2

Es ist mir klar, dass sie diese Klasse entfernt haben, aber immer noch aus ihrer eigenen JAR-Datei darauf verweisen. Wir haben einen Test, der * nur * BouncyCastle berührt und genau denselben Fehler liefert. – Trejkaz

1

i das gleiche Problem gefunden werden, aber eine Ausbesserung es, wenn ich die libreria herunterladen und aktualisieren diese Dateien auf/WEBINF/LIB

22

Ich laufe in ähnliches Problem und hier ist die Konfiguration, die ich es funktioniert verwendet:

  • itext: 5.3.2
  • bcprov-jdk15on: 1,47
  • bcmail-jdk15on: 1,47

Oder in Maven Format:

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

Es mir so viel Zeit in Anspruch nahm, um es herauszufinden (? Habe ich an der richtigen Stelle suchen), ich denke, es Sharing wert ...

ich bin ziemlich sicher, dass andere Konfigurationen funktionieren könnte, aber dieser hat den Trick für mich ...

+0

Danke Mann es funktioniert super – Romano401

+0

bcprov-jdk15on: 1.48 funktioniert auch, und ist derzeit enthalten in der extra-jars ZIP-Datei, die Kıvanç Sahici oben erwähnt –

+0

Ich liebe dich @jehon, du bist der Mann. –

2

ab Version von bcprov-jdk15on-147, Klasse von DEREncodable nicht mehr existiert unter dem Pfad von org.bouncycastle .asn1. Sie können die Version vor 146 (einschließlich 146) verwenden, um diese Frage zu lösen.

+0

Ja, ein paar wichtige Klassen in Version 1.47 von Bouncycastle geändert: http://www.bouncycastle.org/wiki/display/JA1/Porting+from+earlier+BC+releases+to+1.47+and+ter –

11

Mit itextpdf Version 5.5.4 org.bouncycastle Abhängigkeiten werden als <optional>true</optional> markiert. Dies bedeutet, dass Sie diese Abhängigkeiten in Ihren eigenen POM einbeziehen müssen, oder Sie können in Klassen nicht gefundene Ausnahmen ausführen.

<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> 
0

Für jruby-ers mit dem gleichen Ausfall, ich jruby-complete-9.1.13.0.jar von JRuby-complete-1.6.6.jar aktualisiert und das Problem zu lösen schien ... FWIW ..

Verwandte Themen