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