我在我的项目中包含了 2 个 BC jar:bcpkix-jdk15on-1.47.jar 和 bcprov-jdk15on-157.jar.
作为代码中的第一行,我添加了:
Security.addProvider(new BouncyCastleProvider());
线路出现异常:
JcaPKCS10CertificationRequest csrNew = new JcaPKCS10CertificationRequest(request);
By the way it is imported: import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest;
但我仍然得到:
线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/JcaJceHelper 在实现.Util.generateCSR(Util.java:396)
NetBeans 定期找到类,但是当我运行项目时发生异常。
有什么方法可以让我定期包含这两个 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/JcaJceHelper
在 bcprov-jdk15on-1.47
中可用,但在 bcprov-jdk15on-1.57
中不可用。在版本 1.57 中,它的形式为 org/bouncycastle/jcajce/util/JcaJceHelper
。
Netbeans 无法检测到该问题,因为只有在运行代码时才会出现此问题。它不会在编译时被捕获。
解决方案: 是的,您可以同时使用两个罐子。只要使用相同的版本即可。使用
bcpkix-jdk15on-1.57
或 使用 bcprov-jdk15on-1.47
。
我的代码中也出现同样的错误。 我们在我的项目 pom.xml 文件中使用 bcprov-jdk16 1.44 和 bcprov-jdk14 1.47。
作为 OSS 升级的一部分,我删除了上述 jar 并添加了 bcprov-jdk18 1.74 版本。
之后我收到 java.lang.ClassNotFoundException: org.bouncycastle.jcajce.JcaJceHelper
我在我的痘痘中看不到 bcpkix-jdk18 的任何现有工件
所以如果我在我的 pom 中添加 bcpikx-jdk18 1.74,这个问题是否得到解决?
请帮助解决此问题。
提前致谢。