Невозможно сериализовать класс Hadoop с использованием scala-pickling

Я пытаюсь сериализовать объект в JSON, используя scala-pickling 0.10.1 и Scala 2.11, но у меня очень странная проблема. Я воспроизвел минимальный пример ниже:

import org.apache.hadoop.io.compress.CompressionCodecFactory
import scala.pickling.Defaults._
import scala.pickling.json._

trait foo {
  var compressionCodecFactory1: CompressionCodecFactory = _
  val compressionCodecFactory2: CompressionCodecFactory = null
}

class blah extends foo

object FooFoo {

  def main(args: Array[String]) = {

    val k = new blah
    val pkl = k.pickle // compilation fails with error "Cannot generate a pickler for blah"
  }
}

Однако, если я удалю или закомментирую var compressionCodecFactory1: CompressionCodecFactory = _ внутри черты fooОн отлично компилируется и солит. Я также попытался добавить @transient примечание к этой переменной, но компиляция завершается с той же ошибкой.

Почему это могло произойти?

Изменить: если я изменю var compressionCodecFactory1: CompressionCodecFactory = _ либо val compressionCodecFactory1: CompressionCodecFactory = null или же def compressionCodecFactory1: CompressionCodecFactory = _Компиляция удалась.

0 ответов

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