将带有 Bouncy Castle 库的 JAR 打包成单个 JAR

Packaging JAR with libraries of Bouncy Castle into single JAR

我制作了自己的包装器 类,我希望任何使用我编译的 JAR 文件的人都可以使用该包装器 类。

这个 jar 文件还包含一个 lib 文件夹,它还有充气城堡库,因为包装器的目的是让调用者更容易。所以现在我的名为 MyLibrary.JAR 的图书馆已经建成。

现在,当我将此 jar 作为库包含在另一个项目中时,我看到以下错误

线程中的异常 "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/bouncycastle/operator/OperatorCreationException

我检查了 MyLibrary.Jar 文件,发现里面还有一个 Lib 文件夹,所有的充气城堡库都在那里,为什么我仍然看到这个错误?我的 Library jar 有这些结构文件夹

在 lib 文件夹中,我有以下库

我对使用手动压缩和解压缩 jar 并添加这些库不感兴趣我正在寻找我将在 NetBeans 上设置的东西,它将生成 JAR 文件以及相关的充气城堡库。

好的,我找到了,我需要像下面这样添加构建属性,以便拥有一个自动构建的单一库

 <target name="-post-jar">
    <jar jarfile="dist/PKIFrapper.jar" >
    <zipfileset src="${dist.jar}" excludes="META-INF/*" />
    <zipfileset src="src/lib/bcmail-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/bcpg-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/bcpkix-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/bcprov-ext-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/bcprov-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/bctest-jdk15on-155.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/commons-codec-1.10-javadoc.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/commons-codec-1.10-sources.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/commons-codec-1.10.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/log4j-1.2-api-2.3-javadoc.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/log4j-1.2-api-2.3-sources.jar" excludes="META-INF/*" />
    <zipfileset src="src/lib/log4j-1.2-api-2.3.jar" excludes="META-INF/*" />

    <manifest>

        <attribute name="Main-Class" value="MyLibrary.*"/>
    </manifest>
    </jar>
</target>