我有两个通过 Akka 远程通信的应用程序。
我的第一个应用程序中有一个课程a
:
@SerialVersionUID(42L)
case class A()
和我的第二个应用程序中的同一个,但在不同的包中b
:
@SerialVersionUID(42L)
case class A()
但是,当我收到带有类实例的演员消息时,由于包名不同,a
我得到了一个。java.lang.ClassNotFoundException: a.A
有没有办法轻松避免这种情况?
我有两个通过 Akka 远程通信的应用程序。
我的第一个应用程序中有一个课程a
:
@SerialVersionUID(42L)
case class A()
和我的第二个应用程序中的同一个,但在不同的包中b
:
@SerialVersionUID(42L)
case class A()
但是,当我收到带有类实例的演员消息时,由于包名不同,a
我得到了一个。java.lang.ClassNotFoundException: a.A
有没有办法轻松避免这种情况?
您想要什么需要完整的类路径扫描(如果有第三个 mypackage3.A 也具有相同的 SerialVersionUID 怎么办?JVM 怎么知道它必须将 mypackage1.A 反序列化为另一种类型?),显然 SerialVersionUID 不是为了这。它仅用于跟踪同一类的多个版本的序列化兼容性。
阅读什么是 serialVersionUID,我为什么要使用它?
所以你有两个选择: