【问题标题】:java.lang.NoClassDefFoundError with two BouncyCastle jarsjava.lang.NoClassDefFoundError 带有两个 BouncyCastle 罐子
【发布时间】:2017-05-24 12:11:26
【问题描述】:

我的项目中包含了 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 在 implementation.Util.generateCSR(Util.java:396)

NetBeans 经常发现类,但是当我运行项目时发生异常。

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

【问题讨论】:

    标签: java bouncycastle


    【解决方案1】:

    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

    【讨论】:

    • 感谢您的好评!我成功添加了 bcpkix-jdk15on-1.57.jar。
    • 很高兴为您提供帮助 :)
    • 这个答案有一些错误。但无论如何,bouncycastle的版本控制极差,不专业
    • @francogrex 让我知道错误。最好改正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多