我在项目中包含了2个BC罐: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/JcaJceHelperbcprov-jdk15on-1.47中可用,但在bcprov-jdk15on-1.57中不可用。在1.57版中,它可以作为org/bouncycastle/jcajce/util/JcaJceHelper使用。

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

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

关于java - 带有两个BouncyCaSTLe jar 的java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44158100/

10-11 19:55