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

相关文章

来自专栏个人随笔

房上的猫:了解java与学习java前的准备

一.java  概述:   1.通常指完成某些事情的一种既定方式和过程   2.程序可以看做对一系列动作执行过程的描述   3.计算机按照某种顺序完成一系列指令...

3399
来自专栏领域驱动设计DDD实战进阶

02-TypeScript中新的字符串

TypeScript中引入了字符串模板,通过字符串模板可以方便的实现字符串换行的连接、方便变量的使用等。 1.在WebStorm中新建一个文件,后缀名为ts。 ...

3244
来自专栏Eugene's Blog

Python执行系统命令四种方法分类目录文章标签友情链接联系我们

1193
来自专栏施炯的IoT开发专栏

《101 Windows Phone 7 Apps》读书笔记-NOTEPAD

课程内容 Ø 读写文件     Notepad提供了快速、高效的记录手段,它具有以下的特点: Ø 自动保存,使得速记变得快速而简单。 Ø 提供每条笔记的快...

18410
来自专栏爱撒谎的男孩

struts核心配置文件详解(package)

3226
来自专栏编程

Ansible 2 Api 源码分析及实现

Ansible 2 API ansible 2 API发生了很大的变化。 通过对ansible 2.4.2 的源代码(Python 环境为2.7.5)进行分析来...

41510
来自专栏极客猴

os.path 模块用法详解

总所周知,Windows 操作系统和 Linux 系统存在很多不兼容的地方。文件路径就是一个明显的例子。在 Linux 中,路径的分割采用正斜杠 "/",比如 ...

733
来自专栏一个会写诗的程序员的博客

java代码执行过程简介

代码即数据,数据即代码,而我们的数据是保存在文件上的,所以我们说文件就是数据,一切代码都是文件。

813
来自专栏FreeBuf

Angr:一个具有动态符号执行和静态分析的二进制分析工具

什么是angr: angr是一个二进制代码分析工具,能够自动化完成二进制文件的分析,并找出漏洞。在二进制代码中寻找并且利用漏洞是一项非常具有挑战性的工作,它的挑...

5025
来自专栏漏斗社区

点击!AWD攻防解题技巧在此!

背景 这周,给各位带来AWD攻防源码分析。在百越杯CTF比赛中,小学弟通过抓取访问日志得到漏洞利用的方法,于是斗哥决定拿到源码,分析题目的考点,为小伙伴们排忧...

46010

扫码关注云+社区