从2.3.6.RELEASE到2.4.0的Spring引导迁移和json ClassCastException
我有一个Java项目,它依赖于SpringBoot版本2.3.6.RELEASE。但是,我在尝试升级到2.4.0版本时遇到了麻烦。在该项目中,没有其他任何更改,只有SpringBoot的版本。此后,应用程序将抛出以下错误消息:从2.3.6.RELEASE到2.4.0的Spring引导迁移和json ClassCastException,spring,spring-boot,nimbus-jose-jwt,Spring,Spring Boot,Nimbus Jose Jwt,我有一个Java项目,它依赖于SpringBoot版本2.3.6.RELEASE。但是,我在尝试升级到2.4.0版本时遇到了麻烦。在该项目中,没有其他任何更改,只有SpringBoot的版本。此后,应用程序将抛出以下错误消息: Caused by: java.lang.ClassCastException: com.nimbusds.jose.shaded.json.JSONObject cannot be cast to net.minidev.json.JSONObject 我比较了mav
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 smartlibs可能已经做了一些重大的更改
2.3.6.1发布
[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
如上所示,nimbus jose jwt已从8.19更新至9.1.2。此外,json smart不再是2.4.0版中的nimbus jose jwt的一部分
根本原因可能是这种变化
但是,应该做些什么来防止这种异常?您可以通过在pom中显式添加旧版本来覆盖jars nimbus jose jwt和json smart的默认版本。您好,您可以显示一些代码吗?特别是当行抛出异常在您自己的代码库下时。找出使用旧依赖项的原因,并将其升级。您不能“仅仅”升级1个版本,您必须考虑这些因素。可能是您正在使用的某些代码(或其他库)使用了旧代码。要么升级,要么修改代码。如果不是,您就不能使用SpringBoot2.4(目前)。
[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