java.lang.NoClassDefFoundError 有两个 BouncyCastle 罐子

java.lang.NoClassDefFoundError with two BouncyCastle jars

我在我的项目中包含了 2 个 BC jar:bcpkix-jdk15on-1.47.jarbcprov-jdk15on-157.jar.

作为我添加的代码的第一行:

Security.addProvider(new BouncyCastleProvider());  

线路出现异常:

JcaPKCS10CertificationRequest csrNew = new JcaPKCS10CertificationRequest(request);

By the way it is imported: import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest; 

但我仍然得到:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/JcaJceHelper at implementation.Util.generateCSR(Util.java:396)

NetBeans 定期发现 class,但是当我 运行 项目时发生异常。

有什么方法可以定期包含这两个 BouncyCastle 罐子吗?

org/bouncycastle/jcajce/JcaJceHelper 出现错误,org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest 没有。

问题:您正在使用的 jar 文件的 版本。 bcpkix-jdk15on-1.47 是 1.47 版,而 bcprov-jdk15on-1.57 是 1.57 版。

org/bouncycastle/jcajce/JcaJceHelperbcprov-jdk15on-1.47 中可用,但在 bcprov-jdk15on-1.57 中不可用。在 1.57 版中,它以 org/bouncycastle/jcajce/util/JcaJceHelper.

的形式提供

Netbeans 无法检测到该问题,因为只有当您 运行 代码时才会出现此问题。它不会在编译时被捕获。

解法: 是的,您可以同时使用两个罐子。只需使用相同的版本。使用 bcpkix-jdk15on-1.57 使用 bcprov-jdk15on-1.47.