You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks Scala环境使用Jackson XmlMapper转XML报NoSuchMethodError求助

问题根因

该java.lang.NoSuchMethodError错误是典型的Jackson组件版本不兼容导致的:

  • coercionConfigDefaults()方法是jackson-databind 2.12及以上版本才新增的接口
  • 你仅安装了2.13.0版本的jackson-module-scala,缺失对应版本的jackson-dataformat-xml、jackson-databind核心包
  • Databricks集群默认自带低于2.12版本的Jackson组件,类加载时优先加载了集群自带的旧版jackson-databind,新版XmlMapper调用旧版Databind中不存在的方法就会抛出该错误
解决步骤
  1. 先卸载集群中已安装的所有Jackson相关包、重复版本的OkHttp包,避免残留版本冲突
  2. 安装版本完全统一的Jackson全套组件,推荐和你现有Scala模块版本保持一致用2.13.0,需要安装的包列表如下:
    • com.fasterxml.jackson.core:jackson-core:2.13.0
    • com.fasterxml.jackson.core:jackson-annotations:2.13.0
    • com.fasterxml.jackson.core:jackson-databind:2.13.0
    • com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.0
    • com.fasterxml.jackson.module:jackson-module-scala_3:2.13.0
  3. 调整集群Spark类加载优先级,避免优先加载集群自带的旧版Jackson,在集群配置页的Spark配置项中添加以下两个参数,修改后重启集群生效:
    spark.driver.userClassPathFirst true
    spark.executor.userClassPathFirst true
    
  4. 优化初始化代码,避免后续Scala类型序列化异常:
    val xmlMapper: XmlMapper = XmlMapper.builder()
      .addModule(DefaultScalaModule)
      .build()
    val jsonNode: JsonNode = xmlMapper.readTree(responseBody)
    // 直接传入XML字符串即可,无需额外转字节数组
    
其他依赖冲突修复建议
  • 你当前同时安装了2.7.5、3.14.9、4.9.0三个版本的OkHttp,会引发类冲突,根据你的导入语句用的是OkHttp3的API,仅保留com.squareup.okhttp3:okhttp:4.9.0即可,卸载另外两个版本
  • 你安装的com.typesafe:scalalogging-slf4j_2.10:1.1.0是Scala 2.10版本的包,和你用的Scala 3版本不匹配,需要更换为对应Scala 3版本的scalalogging依赖
  • 未使用的依赖如org.scala-lang.modules:scala-swing_3:3.0.0、cc.spray.json:spray-json_2.9.1:1.0.1建议卸载,减少不必要的冲突风险

内容的提问来源于stack exchange,提问作者Karzyfox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:36:06