今天遇到一个问题,是jar包冲突引起的,将过程记录一下。
问题如下:
class “org.bouncycastle.asn1.ASN1Object”'s signer information does not match signer information of other classes in the same package
解决方法:
1.查看报错信息
java.lang.SecurityException: class "org.bouncycastle.asn1.ASN1Object"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:898) ~[na:1.8.0_171]
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:668) ~[na:1.8.0_171]
at java.lang.ClassLoader.defineClass(ClassLoader.java:761) ~[na:1.8.0_171]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_171]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_171]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_171]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_171]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_171]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_171]
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_171]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_171]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_171]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_171]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_171]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_171]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_171]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_171]
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_171]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_171]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_171]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[na:1.8.0_171]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) ~[na:1.8.0_171]
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) ~[na:1.8.0_171]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_171]
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_171]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_171]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_171]
at org.bouncycastle.asn1.gm.GMObjectIdentifiers.<clinit>(Unknown Source) ~[bcprov-jdk15on-1.69.jar:1.69.0]
at org.bouncycastle.asn1.gm.GMNamedCurves.<clinit>(Unknown Source) ~[bcprov-jdk15on-1.69.jar:1.69.0]
at cn.hutool.crypto.SmUtil.<clinit>(SmUtil.java:54) ~[hutool-all-5.8.12.jar:na]
这个错误很明显是jar冲突引起的了
根据ASN1Object寻找所在jar
使用idea,双击shift,搜索所属的jar
定位冲突的jar
问题找到了,那怎么定位是哪两个jar冲突呢。这里可能每个人方法不一样:
1.有的是拿着错误,去百度、google搜索一下,看其他人的处理方法,刚好一模一样还好,大部分情况可能是,大家遇 到的错误一样,但是各自冲突的jar是不一样的,还是不能定位。
2.有的比较熟悉,凭经验去尝试
这里我推荐下我用的方法,是基于idea的一个插件:
安装之后,到自己工程的pom,通过错误分析,找到关键字,进行搜索
解决
到这里,我们就找到冲突的jar了。
大家可以根据实际情况,采用exclusion,或者没有引用的话,进行删除。
到这里,问题就解决了,重新加载maven后,然后继续测试就可以了。