【问题标题】:How to add com.fasterxml.jackson.core.exc.InputCoercionException as a dependency in gradle?如何在 gradle 中添加 com.fasterxml.jackson.core.exc.InputCoercionException 作为依赖项?
【发布时间】:2022-01-12 14:19:13
【问题描述】:

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

【问题讨论】:

    标签: java spring spring-boot gradle jackson


    【解决方案1】:

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

    如何开始解决这些问题。

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

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

    3,通过依赖树列出的版本检查jackson lib是否包含缺少的类。

    如何避免类似spring boot的问题。

    我会推荐使用spring boot项目提供的BOM,里面的版本应该可以协同工作。

    对于带有 kotlin DSL 的 gradle,我们像这样导入它

    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")
    
    }
    
    

    【讨论】:

    • 谢谢!!问题是从不同的罐子中包含的相互冲突的罐子!使用依赖树解决并添加了所有三个带有更新和相同版本的杰克逊罐子!!
    • 好。在 Spring Boot 的情况下,我建议通过 val springBootPlatform = platform(SpringBootPlugin.BOM_COORDINATES) 使用版本管理。它将带来可以协同工作的版本。然后将它与` implementation(springBootPlatform)`一起使用。在我们的项目中,我们遇到了 libs 版本的问题,直到找到这种方式 - 微服务。它不涵盖所有库,但会涵盖 Spring Boot 中使用的库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多