bcprov-jdk15和bcprov-jdk15on引發的奇怪bug

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, 請參考:

  1. Intellij IDEA 中如何查看maven項目中所有jar包的依賴關係圖
  2. Intellij IDEA 快速找到某個maven依賴所在的pom.xml

最終找到引入bcprov-jdk15的包A, 且bcprov-jdk15並沒有在工程中使用到,包A也屬於重複引入. exclud掉包A之後, jar列表中沒有了bcprov-jdk15. 運行中也沒有再報錯

參考文獻:
[1]: https://stackoverflow.com/questions/43181550/nosuchmethoderror-org-bouncycastle-asn1-asn1inputstream-readobjectlorg-bouncyc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章