gpt4 book ai didi

serialization - 为什么需要使用 Scala RemoteActors 设置类加载器?

转载 作者:行者123 更新时间:2023-12-04 19:20:58 26 4
gpt4 key购买 nike

在使用 Scala RemoteActors 时,我收到了一个 ClassNotFoundException,它引用了 scala.actors.remote.NetKernel。我复制了别人的例子并添加了RemoteActor.classLoader = getClass.getClassLoader给我的 Actor ,现在一切正常。为什么这是必要的?

最佳答案

Remote Actors 使用 Java 序列化来来回发送消息。在 actor 库中,您将找到一个自定义对象输入流 ( https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/actors/scala/actors/remote/JavaSerializer.scala ),用于将对象序列化到/从套接字中。还有一些路由代码和其他魔法。

无论如何,用于远程处理的 ClassLoader 是相当重要的。如果您不熟悉 Java RMI,我建议您查找它。在任何情况下,Scala 在序列化/反序列化 actor 时选择的 ClassLoader 是位于 RemoteActor 上的,默认为 null。

这意味着默认情况下,如果不指定 ClassLoader,您将不高兴;)。

如果您处于控制类加载器(例如 OSGi)的环境中,您需要确保将此值设置为可以访问所有序列化参与者使用的所有类的类加载器。

希望有帮助!

关于serialization - 为什么需要使用 Scala RemoteActors 设置类加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com