代码之家  ›  专栏  ›  技术社区  ›  Simon

Akka remote:是否可以处理来自两个不同应用程序的类,它们的包名不同?

  •  0
  • Simon  · 技术社区  · 8 年前

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

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

    @SerialVersionUID(42L)
    case class A()
    

    在我的第二个应用程序中也是一样的,但在不同的包中 b :

    @SerialVersionUID(42L)
    case class A() 
    

    java.lang.ClassNotFoundException: a.A

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Community CDub    7 年前

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

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

    所以你有两个选择:

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