Невозможно сериализовать класс 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 = _
Компиляция удалась.