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 条评论
登录 后参与评论

相关文章

来自专栏我的博客

Sed详解

1、说明 sed 一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令...

30210
来自专栏ml

Linux GDB常用命令一栏

Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明; (*** 表示可执行程序名) (2)退出:quit。有...

3464
来自专栏Aloys的开发之路

VIM常见用法总结

vim中光标如何回到上一次位置 ctrl + o vim如何删除某行至某行之间的内容? 删除3104至5403行之间的内容: :3104,5403d vim使光...

3086
来自专栏hbbliyong

Python类、模块、包的区别

模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般...

882
来自专栏Ryan Miao

Linux中mongodb安装和导出为json

采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mong...

2877
来自专栏华仔的技术笔记

曾经那些坑之第三方sdk的引入import <> 引用编译器的类库路径下的头文件import “” 引用工程目录的相对路径的头文件

4935
来自专栏程序员互动联盟

【专业技术第七讲】linux下如何编译C语言?

存在问题: 小伙伴们都知道gcc -c -o 但是其中的过程和一些参数就不是太清楚了,往往编译出错不知道咋办? 解决方案: 我们来简单普及一下,让大家不盲从请...

3215
来自专栏成猿之路

Linux 基础命令(收藏大全)

/home 普通用户的宿主目录,用户数据存放在其主目录中lib 存放必要 的运行库

974
来自专栏Java学习123

Python操作文件目录

2816
来自专栏三木的博客

Make

###一、make的功能: make是一个用来维护程序模块关系和生产可执行文件的工具,他可以根据程序修改的情况重新编译链接生成的中间代码或最终的可执行文件。执行...

18010

扫码关注云+社区