在Scala中反序列化对象列表时ClassNotFoundException

时间:2015-05-12 20:59:42

标签: scala serialization

我有一个能够序列化到磁盘的对象列表。当我尝试重新读取它们时,抛出ClassNotFoundException。这是为什么?

这是我需要序列化的对象列表。请注意这些是案例类,因此它们是可序列化的。

scala> case class Foo(x: Int)
defined class Foo

scala> val foos = List(new Foo(2), new Foo(3))
foos: List[Foo] = List(Foo(2), Foo(3))

在磁盘上设置输出文件的一些简单管理。

scala> val path = "/tmp/foos.ser"
path: String = /tmp/foos.ser

scala> import java.io._
import java.io._

scala> val file = new File(path)
file: java.io.File = /tmp/foos.ser

现在将对象列表序列化为磁盘。

scala> val out = new ObjectOutputStream(new FileOutputStream(file))
out: java.io.ObjectOutputStream = java.io.ObjectOutputStream@22db002d

scala> out.writeObject(foos)

scala> out.close

当我尝试反序列化List对象时,我得到一个ClassNotFoundException。为什么它找不到Foo类?

scala> val in = new ObjectInputStream(new FileInputStream(file))
in: java.io.ObjectInputStream = java.io.ObjectInputStream@27cf2513

scala> val events = in.readObject().asInstanceOf[List[Foo]]
java.lang.ClassNotFoundException: Foo
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  ...

0 个答案:

没有答案