我在项目中包含了2个BC罐:bcpkix-jdk15on-1.47.jar和bcprov-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罐子吗?
错误即将来临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。