java.lang.NoClassDefFoundError 与两个 BouncyCastle jars

问题描述 投票:0回答:2

我在我的项目中包含了 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; 

但我仍然得到:

线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/JcaJceHelper 在实现.Util.generateCSR(Util.java:396)

NetBeans 定期找到类,但是当我运行项目时发生异常。

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

java bouncycastle
2个回答
11
投票

错误针对的是

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


0
投票

我的代码中也出现同样的错误。 我们在我的项目 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,这个问题是否得到解决?

请帮助解决此问题。

提前致谢。

© www.soinside.com 2019 - 2024. All rights reserved.