首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RemoteActorRefProvider ClassNotFound

RemoteActorRefProvider ClassNotFound
EN

Stack Overflow用户
提问于 2013-11-15 19:33:03
回答 2查看 2.7K关注 0票数 4

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

为了清晰起见,我使用我缩短了类路径arg上的路径来编译

代码语言:javascript
复制
$ 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,但是其他库不应该有什么坏处。

没有汇编问题。

我试着这样跑:

代码语言:javascript
复制
$ scala -classpath "[same as above]" [application]

我收到了一个NSM例外:

代码语言:javascript
复制
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个参数( Scheduler被移除)。但在Akka < 2.2.X中,构造函数采用5个args。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-16 06:39:04

这里的问题是Scala发行版包含Akka-active2.1.0,并且为您将其放在引导类路径中是有帮助的。我们强烈建议在构建任何超出最重要项目的内容时,使用像sbt或maven这样的依赖管理器。

票数 4
EN

Stack Overflow用户

发布于 2016-01-08 19:53:59

正如另一个答案所指出的,问题是scala在引导路径中放置了不同版本的Akka。

要更直接地回答您的问题(正如您所说的,您不想使用sbt):您可以使用java而不是scala来执行您的程序。您只需将适当的Scala罐子放入类路径。

这是一个关于这个问题的消息。重要的部分是:“解决方法是使用java来启动应用程序,而不是scala,您所需要做的就是在类路径中包含正确的Scala jars (scala库和scala编译器)。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20009133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档