NoClassDefFoundError:Could not initialize class org.bouncycastle.cms.CMSSignedDataGenerator

文章讲述了如何处理Java中的NoClassDefFoundError,特别是在使用CMSSignedDataGenerator时。关键在于确保应用所需的bcprov-jar包与JDK版本兼容,如bcprov-jdk18on适用于JDK1.8及以上。文章指导读者检查并正确部署jar包以解决问题。
摘要由CSDN通过智能技术生成

错误信息:java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.cms.CMSSignedDataGenerator

这个CMSSignedDataGenerator类是

java.lang.Object下的 

public class CMSSignedDataGenerator

extends java.lang.Object

general class for generating a pkcs7-signature message.

这个类对应的jar是 org.bouncycastle下面的bcprov 的jar.诸如:bcprov-jdkXXXX.jar

处理办法:检查 应用中是否有需要的这个jar包,如果没有,部署之后的环境就可以通过jdk环境来配置。

实践证明对于bcprov需要使用正确的版本才不会出现诸如此类的java.lang.NoClassDefFoundError: Could not initialize class org.bouncycastle.XXXXXXXXXXXX

bcprov的jar包需要与jdk版本相匹配: 

包名中jdk14的版本适用于jdk1.4,jdk15on的版本适用于jdk1.5以上,jdk15to18的版本适用于jdk1.5到jdk1.8,jdk18on的版本适用于jdk1.8以上,根据自己的jdk版本自行选择对应的版本。

一般这种问题,需要确认应用的开发时候依赖的是哪个版本的bcprov。  把对应版本的bcprov的jar包 放到:jdk的/jre/lib/ext下就可以了。  例如这次遇到的是 在jdk 1.8.0.201环境,应用开发使用的是bcprov-jdk18on-1.77.jar 所以将这个jar放到 /jre/lib/ext下 (原本使用的bcprov版本及比较老,替换)然后再启动应用就可以正常使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值