Akka remote:是否可以使用两个不同应用程序的类,这些应用程序没有相同的包名?

时间:2016-10-21 08:00:37

标签: scala class akka akka-remoting

我有两个应用程序通过Akka remote进行通信。

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

@SerialVersionUID(42L)
case class A()

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

@SerialVersionUID(42L)
case class A() 

但是当我通过一个带有类a实例的actor消息时,由于包名称不同,我得到java.lang.ClassNotFoundException: a.A

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

1 个答案:

答案 0 :(得分:1)

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

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

所以你有两个选择:

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