Json4s DefaultFormats: исключение в потоке «main» java .lang.AbstractMethodError - PullRequest
0 голосов
/ 27 мая 2020

Ссылка : тестовый пример из официальной документации. В настоящее время я использую 3.5 json4s

object JsonLoader {
 def parseJsonConfig[T: Manifest](filename: String): T = {
  implicit lazy val formats: DefaultFormats = new DefaultFormats {
     override val strictOptionParsing: Boolean = true
    }

  val inputStream = getClass.getResourceAsStream(filename)
  val lines = try {
   Source.fromInputStream(new BufferedInputStream(inputStream)).getLines.mkString
  } catch {
   case _: Exception => throw new Exception("config file not found")
  }
  parse(lines, useBigDecimalForDouble = false).extract[T]
 }
}

Exception in thread "main" java.lang.AbstractMethodError
 at org.json4s.DefaultFormats$class.$init$(Formats.scala:329)
 at jp.co.yahoo.k2.i2i.optimizer.util.JsonLoader$$anon$1.<init>(JsonLoader.scala:16)
 at jp.co.yahoo.k2.i2i.optimizer.util.JsonLoader$.parseJsonConfig(JsonLoader.scala:16)

Некоторые люди сталкивались с той же проблемой, но они ссылались на предыдущие версии. Любые мысли и советы приветствуются.

1 Ответ

0 голосов
/ 27 мая 2020

От java документов .

Выбрасывается, когда приложение пытается вызвать абстрактный метод. Обычно эту ошибку перехватывает компилятор; эта ошибка может возникнуть только во время выполнения, если определение некоторого класса несовместимо изменилось с момента последней компиляции текущего выполняемого метода.

Это означает, что код был скомпилирован с одной версией библиотеки json4s, которая изменилась с нарушением совместимости по сравнению с текущей версией библиотеки во время выполнения. Точка перелома - изменение org.json4s.DefaultFormats.

Это обычно происходит, когда есть несколько зависимостей, включая временные зависимости (зависимость зависимости) с различными требованиями к версии. В этом случае инструменты сборки выбирают самую высокую версию.

Лучший подход к отладке - создать дерево зависимостей (это зависит от используемого вами инструмента сборки) и проверить вытеснение библиотеки json4s.

...