Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC

这个bug卡了好几天了,看似很简单的问题,无奈经验不足,只好寻求百度帮助了。

搜出来,造成这种的原因很多种,具体还是要看代码了。、

BouncyCastle就是一个提供了很多哈希算法和加密算法的第三方库。

因为引擎了hutool这个库,所以在库代码中看到:如果用户未引入bouncycastle库,则此方法抛出

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第1张图片

 然后尝试引入bouncycastle库,尝试通过maven引入,未果。

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第2张图片

 考虑是bouncycastle库版本不对吗?

然后继续百度,找到了官网

bouncycastle.orgHome of the Legion of the Bouncy Castle and their Java cryptography resources and open source codehttps://www.bouncycastle.org/latest_releases.html根据搜索得到这个jar包bcprov-jdk18on-xxx.jar貌似是正确的,下载试试吧。

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第3张图片

 果然好多版本,但是点击下载告诉我失败。

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第4张图片

我又在想能从maven下载jdk1.8的吗??

https://mvnrepository.com/search?q=bcprov-jdk18on-xxx.jar

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第5张图片

 然后,选择第三个,



    org.bouncycastle
    bcprov-jdk18on
    1.72

在idea 的maven里引入这个。看看lib里已经进来的。调试代码看看。

然而并没有毛用,应该是各种版本之间的冲突。

2.根据代码给我的人,下来琢磨着把jdk降下来

结果,jdk版本从1.8.2降低到1.8.0没毛用。

下来先解决淘宝的sdk的问题吧,先下载到本地,然后安装到maven

mvn install:install-file -Dfile=C:\taobao-sdk-java-auto-0.0.1.jar -DgroupId=com.dingtalk.open -DartifactId=taobao-sdk-java-auto -Dversion=0.0.1 -Dpackaging=jar

mvn install:install-file -Dfile=C:\druid-1.2.6.jar -DgroupId=com.alibaba -DartifactId=druid-spring-boot-starter -Dversion=1.2.6 -Dpackaging=jar

建模块时报错: 

The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

打开调试日志

mvn clean compile -U -X


好吧,调试日志先不看了,已经找到解决办法了。

也最后终于找到问题的原因了,就是库冲突。但是maven不报错,还是在idea里解决的冲突

如下图:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class cn.hutool.crypto.GlobalBouncyC_第6张图片

 只需要把红色的冲突排除掉就可以了。

总结一下,碰到冲突需要看两个地方。

你可能感兴趣的:(java开发,java,开发语言)