我正在決議一個 XML 字串,JsonNode使用XmlMapperJackson 庫中的a將其轉換為Scala 中的 a 。我在 Databricks notebook 上編碼,所以編譯是在云集群上完成的。編譯我的代碼時,我收到java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig;了一百行“at com.databricks. ...”的錯誤
我可能忘記匯入一些東西,但對我來說這沒關系(如果我錯了,請告訴我):
import ch.qos.logback.classic._
import com.typesafe.scalalogging._
import com.fasterxml.jackson._
import com.fasterxml.jackson.core._
import com.fasterxml.jackson.databind.{ObjectMapper, JsonNode}
import com.fasterxml.jackson.dataformat.xml._
import com.fasterxml.jackson.module.scala._
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
import java.io._
import java.time.Instant
import java.util.concurrent.TimeUnit
import javax.xml.parsers._
import okhttp3.{Headers, OkHttpClient, Request, Response, RequestBody, FormBody}
import okhttp3.OkHttpClient.Builder._
import org.apache.spark._
import org.xml.sax._
由于我使用的是 Databricks,因此沒有用于依賴項的 SBT 檔案。相反,我直接在集群上安裝了我需要的庫。以下是我正在使用的:
com.squareup.okhttp:okhttp:2.7.5
com.squareup.okhttp3:okhttp:4.9.0
com.squareup.okhttp3:okhttp:3.14.9
org.scala-lang.modules:scala-swing_3:3.0.0
ch.qos.logback:logback-classic:1.2.6
com.typesafe:scalalogging-slf4j_2.10:1.1.0
cc.spray.json:spray-json_2.9.1:1.0.1
com.fasterxml.jackson.module:jackson-module-scala_3:2.13.0
javax.xml.parsers:jaxp-api:1.4.5
org.xml.sax:2.0.1
導致錯誤的代碼很簡單(來自這里:https : //www.baeldung.com/jackson-convert-xml-json第 5 章):
val xmlMapper: XmlMapper = new XmlMapper()
val jsonNode: JsonNode = xmlMapper.readTree(responseBody.getBytes())
與responseBody是含有XML檔案的String(I先前檢查的XML的完整性)。洗掉這兩行時,代碼作業正常。
我已經閱讀了大量文章或論壇,但我無法弄清楚是什么導致了我的問題。有人可以幫幫我嗎 ?非常感謝 !:)
uj5u.com熱心網友回復:
歡迎來到依賴地獄和庫中的重大變化。
這通常發生在各種庫引入不同版本的同一庫時。在這種情況下,它是杰克遜。
java.lang.NoSuchMethodError: com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()Lcom/fasterxml/jackson/databind/cfg/MutableCoercionConfig;意思是:一個庫可能需要 Jackson 版本,它有這個方法,但在類路徑上是版本,它還沒有這個功能或被洗掉 bcs 被棄用或重命名。
在這種情況下,最好列印依賴樹并檢查庫中所需的 Jackson 版本。如果可能,請使用較新版本的 requid 庫。
解決方案:使用 libs,它使用兼容版本的 Jackson lib。沒有其他捷徑可能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312794.html
標籤:斯卡拉 杰克逊 数据块 azure-databricks 映射器
