升级Kotlin至2.0.21后Jackson KotlinModule构造方法私有导致编译错误的解决方案咨询
升级Kotlin至2.0.21后Jackson KotlinModule构造方法私有导致编译错误的解决方案咨询
我们正尝试将一个项目从JDK 11迁移到JDK 17,但我们的Kotlin版本更老!整个应用都在使用Kotlin 1.4.0,所以在迁移过程中我们决定同时升级Kotlin版本。
当我把pom文件中的JAR依赖从1.4.0更新到2.0.21后,有个类不兼容这个变更,抛出了如下异常:
[ERROR] C:/Users/sam2004/git/app/develop/app-common/src/main/java/com/trial/app/ui/util/CacheConfig.kt:[53,64] Cannot access 'constructor(reflectionCacheSize: Int = ..., nullToEmptyCollection: Boolean = ..., nullToEmptyMap: Boolean = ..., nullIsSameAsDefault: Boolean = ..., singletonSupport: SingletonSupport = ..., strictNullChecks: Boolean = ..., useKotlinPropertyNameForGetter: Boolean = ..., useJavaDurationConversion: Boolean = ...): KotlinModule': it is private in 'com/fasterxml/jackson/module/kotlin/KotlinModule'.
涉及的依赖如下:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.module/jackson-module-kotlin --> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> <version>2.18.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jdk8 --> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jdk8</artifactId> <version>2.0.21</version> </dependency>
我能看出这个错误来自Jackson的JAR包。
导致问题的代码行是:
private val mapper = ObjectMapper().apply { registerModule(KotlinModule()) }
有没有解决这个问题的方案?还是说我只能回退到旧版本,因为这可能会导致大量代码变更?
备注:内容来源于stack exchange,提问作者hell_storm2004
相关产品推荐
相关产品推荐

