Scala 模块 2.12.3 需要 Jackson Databind 版本 >= 2.12.0 且 < 2.13.0,但我有 databind 2.12.3

Mat*_*ieu 10 java data-binding version apache-spark

对于一个项目,我将 Spark 结构化流与 kafka 结合使用。

我有这个配置:

    <spark.version>3.1.1</spark.version>
    <slf4j.version>1.7.7</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <scala.version>2.12</scala.version>
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,出现以下错误:

引起原因:com.fasterxml.jackson.databind.JsonMappingException:Scala 模块 2.12.3 需要 Jackson Databind 版本 >= 2.12.0 且 < 2.13.0

我很困惑,因为我已经在 2.12.3 中导入了 databind。就在这里,我的 pom.xml 的摘录:

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-scala_${scala.version}</artifactId>
        <version>2.12.3</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.3</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助

All*_*all 0

您确定有错误吗?Scala 2.12 需要 Jackson 2.10.x。

要进行调试,请运行mvn dependency:tree以查看实际拖入的依赖项/版本。您可能会获得非 2.10.x 的其他 Jackson JAR。

如果您正在构建 Spring 项目(具有父 POM spring-boot-dependency),请设置:

<jackson-bom.version>2.10.5.20201202</jackson-bom.version>
Run Code Online (Sandbox Code Playgroud)

满足 Scala 要求的最新 Jackson。否则,您需要将以下内容添加到您的<dependencyManagement/>

  <dependencyManagement>                                                        
    <dependencies>
      ...
      <dependency>                                                              
        <groupId>com.fasterxml.jackson</groupId>                                
        <artifactId>jackson-bom</artifactId>                                    
        <version>${jackson-bom.version}</version>                               
        <type>pom</type>                                                        
        <scope>import</scope>                                                   
      </dependency>
      ...
    </dependencies>                                                             
  </dependencyManagement> 
Run Code Online (Sandbox Code Playgroud)

<version>从 Jackson 中删除依赖项。