繁体   English   中英

java.lang.ClassNotFoundException:未找到 class “org.bouncycastle.jce.provider.X509CertParser”

[英]java.lang.ClassNotFoundException: Didn't find class “org.bouncycastle.jce.provider.X509CertParser”

我正在 android 设备上使用 iText 验证数字签名的 pdf。 这是我的代码片段:

PdfReader reader = new PdfReader(inputStream);
                PdfDocument pdfDocument = new PdfDocument(reader);

                SignatureUtil signatureUtil = new SignatureUtil(pdfDocument);
                List<String> names = signatureUtil.getSignatureNames();
                for (String name :names)
                {
                    PdfPKCS7 pk = signatureUtil.verifySignature(name);
                }

但是,verifySignature 会抛出错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: **.**.******.itextapp, PID: 19467
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/bouncycastle/jce/provider/X509CertParser;
        at com.itextpdf.signatures.SignUtils.readAllCerts(SignUtils.java:240)
        at com.itextpdf.signatures.PdfPKCS7.<init>(PdfPKCS7.java:220)
        at com.itextpdf.signatures.SignatureUtil.verifySignature(SignatureUtil.java:125)
        at com.itextpdf.signatures.SignatureUtil.verifySignature(SignatureUtil.java:102)
        at id.go.atrbpn.itextapp.MainActivity.onActivityResult(MainActivity.java:194)
        at android.app.Activity.dispatchActivityResult(Activity.java:8292)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5090)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5138)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7811)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.bouncycastle.jce.provider.X509CertParser" on path: DexPathList[[zip file "/data/app/**.**.******.itextapp--j_wOVpwQM-U3Fy04RCc-A==/base.apk"],nativeLibraryDirectories=[/data/app/**.**.******.itextapp--j_wOVpwQM-U3Fy04RCc-A==/lib/arm64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

我的毕业文件是:

implementation 'com.itextpdf:itext7-core:7.1.0'
implementation 'com.itextpdf:io:7.1.0'
implementation 'com.itextpdf:kernel:7.1.0'
implementation 'com.itextpdf:layout:7.1.0'

有谁知道如何解决它? 先感谢您。

iText 7 核心/社区 7.1.0 用于 Java - 用于 .NET

密码库 BouncyCastle 现在是一个依赖项,不再包含在 iText 源代码中。

您需要添加 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM