2012-12-26 5 views
6

Ich bin ein Neuling auf iText. Dies ist mein erstes Projekt, das diese Bibliothek verwendet.iText und org.bouncycastle.asn1.ASN1Primitiv nicht gefunden

Ich baue eine PDF mit im Wesentlichen einem großen Tisch auf, und beim Kompilieren, ich erhalte diese Klasse nicht gefunden Fehler: Klassendatei für org.bouncycastle.asn1.ASN1Primitive nicht

gefunden

Ich bin verwirrt, da ich nur die grundlegenden Funktionen verwende und die PDF Signing-Funktionen nicht einmal anfasste. Was soll ich tun, um den Fehler zu beheben?

Ich verwende:

  • JDK 1.7
  • iText 5.3.5
  • extrajars 2.2 (die bcmail-jdk15-146.jar, bcprov-jdk15-146.jar und bctsp- bietet jdk15-146.jar)

ich nur iText innerhalb einer Klasse verwendet wird, mit diesen Importen:

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; 

Wenn es hilft, würde ich gerne klarstellen, dass wenn ich das Projekt in NetBeans ausführen, kompiliert und läuft gut. Der Fehler tritt auf, wenn ich versuche, es zu einer einzigen ausführbaren JAR-Datei zu kompilieren (die den dist/lib enthält)

Dies ist build.xml Ziel, wo der Fehler angezeigt:

<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

Aktuelle iText Versionen (zB 5.3.5) verwenden BouncyCastle 1,47, aber sie 1,46 liefern . Bitte aktualisieren Sie die Abhängigkeiten. – mkl

+0

Ich habe die JAR-Dateien verwendet, die im neuesten Zusatzpaket des iText-Projekts enthalten sind. Ich werde 1.47 versuchen und die Ergebnisse zurücksenden. – phrfpeixoto

+0

Hallo, es funktionierte wie du gesagt hast. Ich danke dir sehr. Bitte posten Sie die Antwort, damit ich sie als korrekt markieren kann. – phrfpeixoto

Antwort

10

Aktuelle iText Versionen (seit 5.3.0) benutze BouncyCastle 1.47, aber du stellst 1.46 zur Verfügung; Auch wenn das wie ein kleiner Schritt aussieht, gibt es wesentliche Änderungen zwischen diesen BC-Versionen. jede vernünftige Versionsverwaltung hätte es 2.0 genannt.

Bitte aktualisieren Sie die Abhängigkeiten.

+0

Ich möchte (für andere mit dem gleichen Problem) bemerken, dass das extrajars-2.2-Paket, bereitgestellt von iText 5.3.5 BC-Version 1.46, die nicht funktionieren wird. – phrfpeixoto

+0

Als eine Randnotiz zu Abhängigkeiten ... iText wurde mavenized. Wenn Sie Informationen zu den Abhängigkeiten benötigen, überprüfen Sie einfach seine pom.xml. Wenn Ihr Projekt auch maven verwendet, werden automatisch die richtigen Abhängigkeiten verwendet. – mkl

+1

BTW, momentan (d. H. Ab iText 5.4.1) wird BC 1.48 verwendet. Überprüfen Sie daher immer die von Ihrer iText-Version benötigte BC-Version. – mkl

3

ich java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive war immer, wenn abhängig von:

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

Ich musste explizit einschließen neuere bouncycastle Artefakte:

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