bcprov-jdk15和bcprov-jdk15on引發的奇怪bug
// An highlighted block
Caused by: java.lang.NoSuchMethodError: org.bouncycastle.asn1.ASN1Object.fromByteArray([B)Lorg/bouncycastle/asn1/ASN1Object;
at org.bouncycastle.openssl.PEMReader.readKeyPair(Unknown Source)
at org.bouncycastle.openssl.PEMReader.readObject(Unknown Source)
解決辦法:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
</dependency>
我的jar列表中有
據說bcprov-jdk15和bcprov-jdk15on兩個jar包不能兼容, 因此在pom中指定引用bcprov-jdk15on, 後來又報錯:DEREncodable signer information does not match
Caused by: java.lang.SecurityException: class "org.bouncycastle.asn1.DEREncodable"'s signer information does not match signer information of other classes in the same package
還是因爲bcprov-jdk15和bcprov-jdk15on兩個jar包不能兼容, 因爲其他包引入了bcprov-jdk15. 所以需要找到是哪一個pom引入bcprov-jdk15, 通過idea工具能簡單明瞭地找到bcprov-jdk15的上游pom, 請參考:
最終找到引入bcprov-jdk15的包A, 且bcprov-jdk15並沒有在工程中使用到,包A也屬於重複引入. exclud掉包A之後, jar列表中沒有了bcprov-jdk15. 運行中也沒有再報錯
參考文獻:
[1]: https://stackoverflow.com/questions/43181550/nosuchmethoderror-org-bouncycastle-asn1-asn1inputstream-readobjectlorg-bouncyc