1
我想通過Twitter的chill-scala庫使用Kryo序列化一個Scala類的實例。它來自一個圖書館(外部的罐子),因此,我認爲,需要向Kryo註冊。通過twitter註冊一個類Kryo chill-scala
如何使用chill-scala註冊一個類以(de)序列化?
這裏是我的代碼的核心,主要基於檢查寒冷的斯卡拉測試套件。
// This is from the chill-scala test suite
def serialize[T](t: T): Array[Byte] = ScalaKryoInstantiator.defaultPool.toBytesWithClass(t)
def deserialize[T](bytes: Array[Byte]): T =
ScalaKryoInstantiator.defaultPool.fromBytes(bytes).asInstanceOf[T]
/**
* Save a value in cache.
*/
def save[T](key: String, value: T, expiration: Int = 0): Future[T] = {
cache.put(key, serialize[T](value), expiration, TimeUnit.SECONDS)
Future.successful(value)
}
/**
* Finds a value in the cache.
*/
def find[T: ClassTag](key: String): Future[Option[T]] = Future {
val result = deserialize[T](cache.get(key).asInstanceOf[Array[Byte]])
Option(result)
}
當我運行它時,它拋出
com.esotericsoftware.kryo.KryoException: Unable to find class: <name_of_external_class>
更一般地,是有關於如何使用寒意 - 斯卡拉文檔某處?這個軟件包的作者顯然做了大量的工作,我看到了一些積極的參考 - 但沒有文檔。
感謝任何指針,
拜倫