2012-12-26 4 views
6

Sono un principiante su iText. Questo è il mio primo progetto che usa questa libreria.iText e org.bouncycastle.asn1.ASN1Primite non trovata

Sto costruendo un PDF con essenzialmente un grande tavolo su di esso, e durante la compilazione, sto ottenendo questa classe di errore Not Found: file di classe per org.bouncycastle.asn1.ASN1Primitive non trovato

Sono confuso, dal momento che sto solo utilizzando le funzionalità di base e non ho nemmeno toccato le funzionalità di firma PDF. Cosa devo fare per correggere l'errore?

sto usando:

  • JDK 1.7
  • iText 5.3.5
  • extrajars 2.2 (che prevede bcmail-jdk15-146.jar, bcprov-jdk15-146.jar e bctsp- jdk15-146.jar)

ho solo usando iText all'interno di una classe, con queste importazioni:

import com.itextpdf.text.BadElementException; 
import com.itextpdf.text.BaseColor; 
import com.itextpdf.text.Chunk; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Font; 
import com.itextpdf.text.Image; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.Phrase; 
import com.itextpdf.text.Rectangle; 
import com.itextpdf.text.pdf.PdfPCell; 
import com.itextpdf.text.pdf.PdfPTable; 
import com.itextpdf.text.pdf.PdfWriter; 

Se aiuta, vorrei chiarire che quando eseguo il progetto all'interno di NetBeans, esso viene compilato e viene eseguito correttamente. L'errore viene visualizzato quando provo a compilarlo in un singolo file jar eseguibile (che include il dist/lib)

Questo è build.xml di destinazione in cui viene visualizzato l'errore:

<target name="single_jar" depends="jar"> 

    <property name="store.jar.name" value="Final"/> 

    <property name="store.dir" value="store"/> 
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/> 

    <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/> 

    <delete dir="${store.dir}"/> 
    <mkdir dir="${store.dir}"/> 

    <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip"> 
     <zipgroupfileset dir="dist" includes="*.jar"/> 
     <zipgroupfileset dir="dist/lib" includes="*.jar"/> 

     <manifest> 
      <attribute name="Main-Class" value="${main.class}"/> 
     </manifest> 
    </jar> 

    <zip destfile="${store.jar}"> 
     <zipfileset src="${store.dir}/temp_final.jar" 
     excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/> 
    </zip> 

    <delete file="${store.dir}/temp_final.jar"/> 

</target> 
+0

versioni iText attuali (ad esempio 5.3.5) utilizzare BouncyCastle 1.47 ma che fornisci 1,46 . Si prega di aggiornare le dipendenze. – mkl

+0

Ho usato i jar forniti nell'ultimo pacchetto extrajars nel progetto iText. Proverò 1.47 e pubblicheremo i risultati. – phrfpeixoto

+0

Ciao, ha funzionato come hai detto tu. Grazie mille. Si prega di inviare la risposta, quindi posso contrassegnarlo come corretto. – phrfpeixoto

risposta

10

versioni correnti iText (dal 5.3.0) usa BouncyCastle 1.47 ma fornisci 1.46; anche se questo sembra un piccolo passo, ci sono cambiamenti sostanziali tra quelle versioni BC; qualsiasi ragionevole gestione della versione l'avrebbe chiamata 2.0.

Si prega di aggiornare le dipendenze.

+0

Vorrei notare (per gli altri con lo stesso problema) che il pacchetto extrajars-2.2, fornito da iText 5.3.5 include BC versione 1.46, che non funzionerà. – phrfpeixoto

+0

Come nota a margine sulle dipendenze ... iText è stato mavenizzato. Se hai bisogno di informazioni sulle dipendenze, controlla semplicemente il suo pom.xml. Se il tuo progetto utilizza anche Maven, vengono utilizzate automaticamente le dipendenze corrette. – mkl

+1

BTW, attualmente (vale a dire a partire da iText 5.4.1) BC 1.48 è in uso. Quindi, controlla sempre la versione BC richiesta dalla tua versione di iText. – mkl

3

mi è stato sempre java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive quando a seconda:

<dependency>      
     <groupId>com.itextpdf.tool</groupId> 
     <artifactId>xmlworker</artifactId> 
     <version>5.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.itextpdf</groupId> 
     <artifactId>itextpdf</artifactId> 
     <version>5.5.0</version> 
    </dependency> 

avevo bisogno di includere esplicitamente più recenti manufatti BouncyCastle:

<dependency> 
     <groupId>org.bouncycastle</groupId> 
     <artifactId>bcprov-jdk15on</artifactId> 
     <version>1.50</version> 
    </dependency> 
    <dependency> 
     <groupId>org.bouncycastle</groupId> 
     <artifactId>bcpkix-jdk15on</artifactId> 
     <version>1.50</version> 
    </dependency>   
    <dependency>      
     <groupId>com.itextpdf.tool</groupId> 
     <artifactId>xmlworker</artifactId> 
     <version>5.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.itextpdf</groupId> 
     <artifactId>itextpdf</artifactId> 
     <version>5.5.0</version> 
    </dependency>