Scala序列化(scala.pickling)在2.12版本的编译和测试

ScalaPickling(https://github.com/scala/pickling)是一个用于Scala对象序列化的好工具。它是scala的顶级开源项目之一。

然而该程序包当前并不支持scala的2.12版本,刚好系统scala升级到2.12版本,因此拟自己对其进行实现一下。具体编译过程中还是有不少的BUG。

主要修正的BUG如下:

(1)需要添加引用:“scala-parser-combinators_2.12-1.0.6.jar”,这个包在scala安装路径的lib环境下可以找到。主要用于解决import scala.util.parsing.json._这个引用找不到的问题。

(2)需要scala.concurrent.util. Unsafe这个类

(3)JDK环境建议为1.8环境。

根据上述编译步骤,程序顺利通过。

对该包进行测试,如下:

case class Person(name: String, age: Int)

object PickleSample{

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

println("封装测试...")

val originperson = Person("foo", 20)

val pkl = originperson.pickle

println(pkl.value)

println("还原测试...")

val person = pkl.unpickle[Person]

println(person.name)

println(person.age)

}

}

测试结果输出如下:

2017-12-29_114207.png

代码将公开在我的github(https://github.com/ndscigdata?tab=repositories)中,敬请关注。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏余林丰

虚拟机类加载机制(3)——线程上下文类加载器

之所以将线程上下文类加载器(Thread Context ClassLoader)单独拿出来写,确实是因为它涉及的东西比较多,既然带有线程两个字,一定也是非常重...

1957
来自专栏技巅

Glusterfs之rpc模块源码分析(中)之Glusterfs的rpc模块实现(1)

1553
来自专栏我的博客

WorkMan手册笔记-定时器类

一、定时执行某个函数或者类方法 int \Workerman\Lib\Timer::add(float $time_interval, callable $ca...

2817
来自专栏社区的朋友们

django 初始化默认数据的一个方法

经常可能会有的一个需求就是,一个表中会有一些默认数据,这些数据未来是可以通过管理端来配置的。所以数据库在被建立之后,会有一些默认数据被插入表中。

1.7K2
来自专栏友弟技术工作室

bash及其特性

1193
来自专栏黑泽君的专栏

c语言基础学习02_helloworld

============================================================================= 涉及...

1061
来自专栏Python爬虫实战

Python生成目录树

在 windows 系统中,有一个 CMD 指令可以生成目录树,该条指令是 "tree" 。

1131
来自专栏鬼谷君

django基础之二

1194
来自专栏游戏开发那些事

【python游戏编程之旅】第二篇--pygame中的IO、数据

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。

1054
来自专栏刘望舒

React Native探索(五)使用fetch进行网络请求

前言 React Native可以使用多种方式来进行网络请求,比如fetch、XMLHttpRequest以及基于它们封装的框架,fetch可以说是替代XMLH...

2747

扫码关注云+社区