SpringBoot バージョン 2.3.6.RELEASE に依存する Java プロジェクトがあります。しかし、バージョン 2.4.0 にアップグレードしようとして困っています。プロジェクトでは他に何も変更されておらず、SpringBoot のバージョンのみが変更されました。それ以降、アプリケーションは次のエラー メッセージをスローします。
Caused by: java.lang.ClassCastException: com.nimbusds.jose.shaded.json.JSONObject cannot be cast to net.minidev.json.JSONObject
Maven 依存関係ツリー ( mvn dependency:tree
) の比較を行ったところ、おそらくいくつかの重要な変更がnimbus-jose-jwtおよびjson-smartライブラリに対して行われていることがわかりました。
2.3.6.リリース
[INFO] +- org.springframework.security:spring-security-oauth2-jose:jar:5.3.5.RELEASE:compile
[INFO] | +- com.nimbusds:nimbus-jose-jwt:jar:8.19:compile (version managed from 8.20.1)
[INFO] | | +- com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile
[INFO] | | \- net.minidev:json-smart:jar:1.3.1:provided (scope managed from compile)
[INFO] | +- org.springframework.security:spring-security-core:jar:5.3.5.RELEASE:compile
2.4.0
[INFO] +- org.springframework.security:spring-security-oauth2-jose:jar:5.4.1:compile
[INFO] | +- com.nimbusds:nimbus-jose-jwt:jar:9.1.2:compile (version managed from 9.0.1)
[INFO] | | \- com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile
[INFO] | +- org.springframework.security:spring-security-core:jar:5.4.1:compile
上記のように、nimbus-jose-jwtが 8.19 から 9.1.2 に更新されました。さらに、json-smartは 2.4.0 のnimbus-jose-jwt の一部ではなくなりました。
根本的な原因はおそらくこの変更ですhttps://connect2id.com/blog/nimbus-jose-jwt-9 しかし、この例外を防ぐために何をすべきでしょうか?