Jar包冲突解决

“问题:在对接TrustSQL开放测试平台时,遇到问题,对方提供的SDK工具包中报空指针异常,
原因:检查后发现是因为在选择加密曲线“secp256k1”时,没有获取到此曲线传递,一步步DEBUG后发现是由于对方提供的SDK工具包中已有方法:ECNamedCurveTable.getParameterSpec(“secp256k1”)
而项目本身已经带有一个jar包:bcprov-jdk14-136.jar,此jar包中也包含有上述方法,而且方法路径和SDK工具包中一致,在项目运行过程中,项目本身优先调用的是此jar包中的方法,而bcprov-jdk14-136.jar中的ECNamedCurveTable.getParameterSpec(“曲线”)内无法生成,secp256k1的曲线传递,故而返回一个null对象,导致在接下来的调用中,产生了空指针异常。
总结:综上所述,原因就是说简单不简单的jar包冲突

解决:
方法一:项目是maven项目,使用命令:dependency:tree -Dverbose -Dincludes=:bcprov-jdk
找出此bcprov-jdk14-136.jar包的依赖关系,如下所示:

得知此jar包是在org.xhtmlrenderer:core-renderer下依赖进入项目的,故在pom.xml中添加以下配置:

 <dependency>
   <groupId>org.xhtmlrenderer</groupId>
   <artifactId>core-renderer</artifactId>
   <version>R8pre2</version>
    <exclusions>
                <exclusion>
                    <groupId>com.lowagie</groupId>
                    <artifactId>itext</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bcprov-jdk14</artifactId>
                </exclusion>
            </exclusions>
  </dependency>

即可排除bcprov-jdk14-136.jar,问题解决!
另外注意:貌似使用maven排除jar包需一层一层往下排除,直接排除最底层依赖的jar貌似是不行,具体没有验证,有大神知道么?!
方法二:捷径~项目打包后,直接删除bcprov-jdk14-136.jar即可,此方法不知有没有缺陷,毕竟依赖关系在那摆着!~”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值