找不到iText和org.bouncycastle.asn1.asn1原语

找不到iText和org.bouncycastle.asn1.asn1原语,itext,bouncycastle,classnotfound,Itext,Bouncycastle,Classnotfound,我是iText的新手。这是我第一个使用这个库的项目 我正在构建一个基本上有一个大表的PDF,在编译时,我得到了这个类未找到错误:org.bounchycastle.asn1.asn1的类文件未找到 我很困惑,因为我只使用了基本的功能,甚至没有触及PDF签名功能。我应该做什么来修复错误 我正在使用: JDK1.7 iText 5.3.5 extrajars 2.2(提供bcmail-jdk15-146.jar、bcprov-jdk15-146.jar和bctsp-jdk15-146.jar)

我是iText的新手。这是我第一个使用这个库的项目

我正在构建一个基本上有一个大表的PDF,在编译时,我得到了这个类未找到错误:org.bounchycastle.asn1.asn1的类文件未找到

我很困惑,因为我只使用了基本的功能,甚至没有触及PDF签名功能。我应该做什么来修复错误

我正在使用:

  • JDK1.7
  • iText 5.3.5
  • extrajars 2.2(提供bcmail-jdk15-146.jar、bcprov-jdk15-146.jar和bctsp-jdk15-146.jar)
我仅在一个类中使用iText,并使用以下导入:

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;
如果有帮助的话,我想澄清一下,当我在NetBeans中运行该项目时,它的编译和运行都很好。当我试图将其编译为单个可执行jar文件(包括dist/lib)时,会出现错误

这是出现错误的build.xml目标:

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

当前的iText版本(从5.3.0开始)使用BouncyCastle 1.47,但您提供了1.46;尽管这看起来只是一小步,但这些BC版本之间还是有实质性的变化;任何明智的版本管理都会称之为2.0


请更新依赖项。

我得到了
java.lang.NoClassDefFoundError:org/bouncycastle/asn1/asn1基元
,具体取决于:

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

com.itextpdf.tool
xmlworker
5.5.0
com.itextpdf
itextpdf
5.5.0
我需要明确地包括更新的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>

org.bouncycastle
bcprov-jdk15on
1.50
org.bouncycastle
bcpkix-jdk15on
1.50
com.itextpdf.tool
xmlworker
5.5.0
com.itextpdf
itextpdf
5.5.0

当前的iText版本(如5.3.5)使用BouncyCastle 1.47,但您提供了1.46。请更新依赖项。我使用了iText项目最新extrajars包中提供的JAR。我会试试1.47,然后把结果发回来。嗨,它就像你说的那样工作。非常感谢你。请发布答案,以便我可以将其标记为正确。我想指出(对于其他有相同问题的人),iText 5.3.5提供的extrajars-2.2包包含BC版本1.46,该版本不起作用。作为对依赖项的补充说明。。。iText已被专业化。如果需要有关依赖项的信息,只需检查其pom.xml即可。如果您的项目也使用maven,则会自动使用正确的依赖项。顺便说一句,目前(即从iText 5.4.1开始)正在使用BC 1.48。因此,请始终检查iText版本所需的BC版本。