akka作成actor時報エラー:IllegalArgumentException:no matching constructor found on class$iwC$$iwC$$iwC$$iwC$...
2980 ワード
サンプルのコードをspark-shellに入力します.
結果として、次のエラーが発生します.
何を考えても理解できない!最后にやっと原因を见つけました:actorクラスとして埋め込みクラスを采用できません!!!spark-shellの中のクラスは埋め込みクラスとみなされ、以上のエラーを避けるためにクラスファイルを単独で書く必要があります.
stackoverflowでは、次のように説明されています.
Take this example:
I can do
That's why akka failed to create this actor.
転載先:https://www.cnblogs.com/bluejoe/p/5115841.html
import akka.actor.Actor
import akka.actor.Props
import 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 A
val b = new a.B
That's why akka failed to create this actor.
転載先:https://www.cnblogs.com/bluejoe/p/5115841.html