2012-04-30 12 views
18

Sto tentando di utilizzare iText Java. Quando si esegue l'esempio "how to sign" verifica il seguente errore:iText/BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable e org.bouncycastle.tsp.TimeStampTokenInfo

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

Secondo "Getting Started with iText - How to sign a PDF using iText", devo usare la BouncyCastle.

Ho scaricato il file: bcprov-jdk15on-147.jar da BouncyCastle download page.
e aggiunti al progetto: Java Build Path/biblioteche/Aggiungi JAR esterni ...

ho aggiunto la seguente linea:

Security.addProvider(new BouncyCastleProvider()); 

Quando si esegue l'esempio si verifica lo stesso errore.
Quindi ho scaricato un altro file: bcpkix-jdk15on-147.jar intitolato "PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL"
E aggiunto al progetto: Percorso di creazione Java/Librerie/Aggiungi JAR esterni.
Ora ho due barattoli.

Quando si esegue l'esempio verifica il seguente errore:

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

ho provato il download "bcprov-ext-jdk15on-147.jar", ma non ha risolto il problema.

Sto usando iText 5.2.1 ed eclissi su Windows 7 a 64 bit.

risposta

19

Le librerie di BouncyCastle sono sottoposte a pesanti modifiche API che hanno interrotto la compatibilità con altre librerie come iText.

In entrambi i

  • uso una versione precedente di librerie BouncyCastle. Le vecchie versioni possono essere trovate here. Tuttavia, dovrai trovare la versione corretta di iText compatibile con questa particolare versione di BC.

  • creare la propria build di iText (il trunk SVN è stato corretto). È possibile creare iText con Maven (c'è un breve readme file nella radice di SVN). Si prega di notare che è a vostro rischio, ci possono essere bug nel bagagliaio.

  • attendere la prossima versione di iText. Dalla mia esperienza, le versioni di iText arrivano ogni due mesi, a volte più spesso, a volte meno. Non sono un committer iText, quindi non posso darti alcun ETA.

Maggiori informazioni possono essere trovate in this thread

+0

Qual è il tuo suggerimento? Ho provato a ottenere il SVN https://itext.svn.sourceforge.net/svnroot/itext ma non so come compilare. Ho provato a utilizzare una vecchia versione di BouncyCastle http://repo1.maven.org/maven2/org/bouncycastle/ senza successo. – Cobaia

+0

Se non si preme per tempo, aspetterei la prossima versione di iText. Se non ci riesci, ho modificato la mia risposta con ulteriori dettagli ... –

+5

Per iText2.1.7 e Sun JDK 1.7 Questo collegamento ha risolto il problema di non_descrizione DEREncodable. http://repo2.maven.org/maven2/org/bouncycastle/bcprov-jdk15%2b/1.46/bcprov-jdk15%2b-1.46.jar uomo –

1

È strano che i vasi disponibili su bouncycastle.org non contengano questa classe. Forse potresti volerne usare uno dalle posizioni elencate in this page (link).

+2

soffia la mia mente che hanno tolto questa classe, ma ancora si riferiscono ad essa dal proprio file jar. Abbiamo un test che * solo * tocca BouncyCastle e ottiene esattamente lo stesso errore. – Trejkaz

1

Ho lo stesso problema, ma una correzione quando ho scaricato la libreria e aggiornare i file su/WEBINF/LIB

22

ho incontrato problema simile , e qui è la configurazione che ho usato per farlo funzionare:

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

O in formato Maven:

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

Mi c'è voluto così tanto tempo per capirlo (? Ha fatto guardo al posto giusto), penso che vale la pena condividere ...

sono abbastanza sicuro che altre configurazioni potrebbero lavorare, ma questo ha fatto il trucco per me ...

+0

Thank sta funzionando grandi – Romano401

+0

bcprov-jdk15on: 1.48 lavori anche, ed è attualmente incluso nel file ZIP extra-jars che Kıvanç Sahici ha menzionato sopra –

+0

Ti amo @jehon, tu sei l'uomo. –

2

dalla versione di bcprov-jdk15on-147, classe di DEREncodable è non esistono più nel percorso di org.bouncycastle .asn1. Puoi usare la versione prima di 146 (incluso 146) per risolvere questa domanda.

+0

Sì, un paio di classi importanti Modificato nella versione 1.47 di BouncyCastle: http://www.bouncycastle.org/wiki/display/JA1/Porting+from+earlier+BC+releases+to+1.47+and+later –

11

Con la versione 5.5.4 itextpdf dipendenze org.bouncycastle sono contrassegnati come <optional>true</optional>. Ciò significa che è necessario includere tali dipendenze nel proprio pom, oppure è possibile eseguire eccezioni 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> 
0

Per JRuby-tori con lo stesso fallimento, ho aggiornato a JRuby-completa-9.1.13.0.jar da JRuby-completa-1.6.6.jar e il problema sembrava risolvere ... FWIW .. .