具有两个BouncyCastle罐的java.lang.NoClassDefFoundError

ldr*_*vic 1 java bouncycastle

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

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

Security.addProvider(new BouncyCastleProvider());  
Run Code Online (Sandbox Code Playgroud)

在线发生异常:

JcaPKCS10CertificationRequest csrNew = new JcaPKCS10CertificationRequest(request);

By the way it is imported: import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest; 
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到:

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

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

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

Amb*_*wal 5

错误即将来临org/bouncycastle/jcajce/JcaJceHelper,而不是错误org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest

问题:您正在使用的jar文件的版本。bcpkix-jdk15on-1.47是1.47版,而是bcprov-jdk15on-1.571.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

  • @francogrex 让我知道错误。最好纠正一下。 (2认同)