我有一个能够序列化到磁盘的对象列表。当我尝试重新读取它们时,抛出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)
...