无法使用Scala-Pickling序列化Hadoop类

时间:2018-09-01 23:07:04

标签: scala serialization pickle scala-pickling

我正在尝试使用scala-pickling 0.10.1和Scala 2.11将对象序列化为JSON,但是存在一个非常奇怪的问题。我在下面复制了一个最小的示例:

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中,但是编译失败并出现相同的错误。

为什么这可能会发生?

编辑: 如果我将var compressionCodecFactory1: CompressionCodecFactory = _更改为val compressionCodecFactory1: CompressionCodecFactory = nulldef compressionCodecFactory1: CompressionCodecFactory = _,则编译成功。

0 个答案:

没有答案