java - RemoteActorRefProvider ClassNotFound

标签 java scala akka

我正在努力尝试在 Scala 中设置远程参与者。我正在运行 Scala 2.10.2 和 Akka 2.2.1。

我使用 [为了清楚起见,我缩短了类路径 arg 上的路径] 进行编译:

$ scalac -classpath "akka-2.2.1/lib:akka-2.2.1/lib/scala-library.jar:akka-2.2.1/lib/akka:akka-2.2.1/lib/akka/scala-reflect-2.10.1.jar:akka-2.2.1/lib/akka/config-1.0.2.jar:akka-2.2.1/lib/akka/akka-remote_2.10-2.2.1.jar:akka-2.2.1/lib/akka/akka-kernel_2.10-2.2.1.jar:akka-2.2.1/lib/akka/akka-actor_2.10-2.2.1.jar:." [file.scala]

我一直在添加新的库来尝试对此进行调试 - 我很确定我真正需要包含的只是 akka-remote,但其他库应该不会受到影响。

编译没有问题。

我试着这样跑:

$ scala -classpath "[same as above]" [application]

我收到 NSM 异常:

java.lang.NoSuchMethodException: akka.remote.RemoteActorRefProvider.<init>(java.lang.String, akka.actor.ActorSystem$Settings, akka.event.EventStream, akka.actor.Scheduler, akka.actor.DynamicAccess)
at java.lang.Class.getConstructor0(Class.java:2810)
at java.lang.Class.getDeclaredConstructor(Class.java:2053)
...

查看源代码,似乎 Akka 2.2.X 的此构造函数有 4 个参数(删除了调度程序)。但是在 Akka < 2.2.X 中,构造函数需要 5 个参数。

因此,我认为我的类路径设置不正确。在编译时,Scala 必须找到 <2.2.X 风格。我什至不知道它会在哪里找到它,因为我只安装了 Akka 2.2.1。

有什么建议!?谢谢! (请不要说使用 SBT)。

最佳答案

这里的问题是 Scala 发行版包含 akka-actor 2.1.0 并有助于将其放入引导类路径中。我们强烈建议在构建超出最琐碎项目的任何内容时使用依赖管理器,如 sbt 或 maven。

关于java - RemoteActorRefProvider ClassNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20009133/

相关文章:

jvm - 不同的jvm之间是否兼容?

java - Jackson:了解源 JSON 是数组还是对象

java - 更新具有Java模式的数组中的值

scala - Akka Actor如何仅处理最新消息

java - 使用 DeathWatch 杀死 Akka actor 时未发送消息

java - 如何将字符串转换为具有相同内容的byte[]

scala - akka:使用 akka-typed 实现事件对象模式

java - Scala 类 Final def this() 声明没有公共(public)无参构造函数

java - 有没有办法在 Scala 或 Spark 中强制等待 java 进程结束?

scala - 在失败的情况下从询问中解决 Akka future