Akka 遥控器:是否可以使用来自两个不同的应用程序的 类,它们没有相同的包名称?

Akka remote: is it possible to work with classes from two differents app which don't have the same package name?

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

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

@SerialVersionUID(42L)
case class A()

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

@SerialVersionUID(42L)
case class A() 

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

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

您想要的将需要完整的 class 路径扫描(如果有第三个 mypackage3.A 也具有相同的 SerialVersionUID 怎么办?JVM 如何知道它必须反序列化 mypackage1.A 转换成另一种类型?),显然 SerialVersionUID 并不适用于此。它仅用于跟踪 same class.

的多个版本之间的序列化兼容性

读一读What is a serialVersionUID and why should I use it?

所以你有两个选择:

  • 您使用手动将字节数组从 mypackage1.A 反序列化为 mypackage2.A
  • 您共享数据模型并避免在两个不同应用程序的两个不同包中有两个相同的 classes