0

我有两个通过 Akka 远程通信的应用程序。

我的第一个应用程序中有一个课程a

@SerialVersionUID(42L)
case class A()

和我的第二个应用程序中的同一个,但在不同的包中b

@SerialVersionUID(42L)
case class A() 

但是,当我收到带有类实例的演员消息时,由于包名不同,a我得到了一个。java.lang.ClassNotFoundException: a.A

有没有办法轻松避免这种情况?

4

1 回答 1

1

您想要什么需要完整的类路径扫描(如果有第三个 mypackage3.A 也具有相同的 SerialVersionUID 怎么办?JVM 怎么知道它必须将 mypackage1.A 反序列化为另一种类型?),显然 SerialVersionUID 不是为了这。它仅用于跟踪同一类的多个版本的序列化兼容性。

阅读什么是 serialVersionUID,我为什么要使用它?

所以你有两个选择:

  • 您使用手动将字节数组从 mypackage1.A 反序列化为 mypackage2.A
  • 您共享数据模型,避免在两个不同应用程序的两个不同包中拥有两个相同的类
于 2016-10-21T10:08:45.200 回答