如何在 gradle 中添加 com.fasterxml.jackson.core.exc.InputCoercionException 作为依赖项?

How to add com.fasterxml.jackson.core.exc.InputCoercionException as a dependency in gradle?

我得到 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/PropertyNamingStrategies 用于另一个项目。我也在当前 gradle 项目中包含了 jackson jar。但是在启动项目时,我遇到了上述错误。似乎我们需要添加 com.fasterxml.jackson.core.exc.InputCoercionException 作为依赖项,但我无法理解在哪里添加它作为依赖项?有人可以帮忙吗?

java.lang.NoClassDefFoundError 这意味着 - 缺少 class com/fasterxml/jackson/databind/PropertyNamingStrategies 或 class 的依赖项已被删除,这意味着项目依赖项中使用的 jackson libs 版本将无法协同工作。

如何开始解决这些问题。

1,通过 IDE 尝试查找缺失的 class(如果存在)。如果不存在,则尝试在 Internet 上查找缺少 class 的 jar 并添加为依赖项。如果您的 IDE show class 存在,那么问题可能出在导入范围上。范围管理因使用的技术而异,因此请提供您使用的技术的详细信息或粘贴来自 build.kts 的依赖项。确保使用 implementation 以防在项目中导入此 class 而不是 runtimeOnly.

2,您发现 class 然后尝试根据使用的技术打印项目依赖树命令。对于 gradle ./gradlew dependencies 或子模块 ./gradlew submoduleName:dependencies 并查看项目中的 jackson 版本。

3,检查 jackson lib,通过依赖树列出的版本包含缺失 class。

如何避免像 spring 引导那样的问题。

我建议使用 spring 引导项目提供的 BOM,其中的版本应该可以协同工作。

对于 gradle 和 kotlin DSL,我们像这样导入它

import org.springframework.boot.gradle.plugin.SpringBootPlugin


plugins {
    id("org.springframework.boot") version "2.6.2"
}

dependencies {
    val springBootPlatform = platform(SpringBootPlugin.BOM_COORDINATES)
    annotationProcessor(springBootPlatform)

    implementation(springBootPlatform)
    //this version has to be searched for spring boot version
    implementation(platform("org.springframework.cloud:spring-cloud-dependencies:2021.0.0"))
    
    //put desired jackson dependencies
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")

}