akka创建actor时报错:IllegalArgumentException: no matching constructor found on class $iwC$$iwC$$iwC$$iwC$
发布日期:2022-08-14 12:21:53 浏览次数:1 分类:技术文章

本文共 1188 字,大约阅读时间需要 3 分钟。

在spark-shell中输入范例中的代码:

import akka.actor.Actorimport akka.actor.Propsimport akka.event.Logging class MyActor extends Actor {  val log = Logging(context.system, this)  def receive = {    case "test" ⇒ log.info("received test")    case _      ⇒ log.info("received unknown message")  }}val system = ActorSystem("MySystem")  val myActor = system.actorOf(Props[MyActor], name = "myactor")
结果总是遇到如下错误:

scala>   val myActor = system.actorOf(Props[MyActor], name = "myactor")java.lang.IllegalArgumentException: no matching constructor found on class $iwC$$iwC$$iwC$$iwC$MyActor for arguments []	at akka.util.Reflect$.error$1(Reflect.scala:81)	at akka.util.Reflect$.findConstructor(Reflect.scala:93)	at akka.actor.Props.constructor(Props.scala:194)	at akka.actor.Props.
(Props.scala:213) at akka.actor.Props$.apply(Props.scala:69) at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.
(
:24)
百思不得其解!最后终于找到了原因:不能采用内嵌类作为actor类!!!!spark-shell里面的类会被认为是内嵌类,为了避免以上错误,需要单独写类文件。

stackoverflow里面是这么解释的:

Take this example:

class A{
class B{}}

I can do new A, but new B will return an error. I have to do:

val a = new Aval b = new a.B

That's why akka failed to create this actor.

转载地址:https://bluejoe.blog.csdn.net/article/details/44707105 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:AMD + VMware Workstation 16 + macOS Monterey 12.2 (21D49) 及卡顿优化
下一篇:ajax和axios、fetch的区别

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月03日 04时09分08秒