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>
更一般地,是有关于如何使用寒意 - 斯卡拉文档某处?这个软件包的作者显然做了大量的工作,我看到了一些积极的参考 - 但没有文档。
感谢任何指针,
拜伦