Неявное преобразование с использованием as из JsLookupResult в List[Map[String, JsValue]] ошибка

У меня есть это scala код, который анализирует json и получает notifiers объект из jsonValue,

object App {
  def main(args: Array[String]) {
    val json = 
      """{
         "notifiers":[
            {
               "type":"url",
               "attributes":{
                  "msg":"Hello world!"
               }
            }
         ],
         "filters":[],
         "position":{}
      }"""
    val jsonValue: JsValue = Json.parse(json)
    (jsonValue \ "notifiers").as[List[Map[String, JsValue]]]
  }
}

Почему я получаю эту ошибку в последней строке?

Несколько маркеров в этой строке: - Точка разрыва строки:App [строка: 25] - Приложение - Обнаружено неявное преобразование: jsonValue ⇒ jsValueToJsLookup(jsonValue): play.api.libs.json.JsLookup - плохая символьная ссылка. Подпись в DefaultReads.class ссылается на термин time в пакете Java, который недоступен. Он может полностью отсутствовать в текущем пути к классам или версия в пути к классам может быть несовместима с версией, используемой при компиляции DefaultReads.class.

Используя Scala 2.10.6, этот проект представляет собой модуль maven с com.typesafe.play зависимость

<dependency>
    <groupId>com.typesafe.play</groupId>
    <artifactId>play-json_2.10</artifactId>
    <version>2.4.6</version>
</dependency>

Ps. Я сделал то же самое в какой-то другой программе, где я использую это .as(def as[T](implicit fjs: Reads[T]): T ) набрать конвертировать из JsLookupResult в List[Map[String, JsValue]] без ошибок.

1 ответ

Решение

Попробуйте использовать JDK 8 или предыдущую версию Play. Play 2.4 поддерживает только JDK 8 ( https://www.playframework.com/documentation/2.4.x/Migration24) - ошибка, которую вы получаете из-за невозможности найти участника time в упаковке java, который был введен с JDK 8.

Другие вопросы по тегам