无法创建使用阿卡的Java API UnTypedActorFactory演员(Unable to

2019-09-17 11:13发布

我想创建使用非类型的演员厂演员,编译发生的罚款。 但是,运行应用程序时,我得到以下错误。 我缺少的配置什么?

Java代码:

MyActor myactor = new MyActor();  //MyActor extends UnTypedActor
ActorSystem system = ActorSystem.create("mynamespace");
ActorRef actor = system.actorOf(new Props(new UntypedActorFactory() {
      public UntypedActor create() {
          return myactor;
      }
  }));

运行时错误:

akka.actor.ActorInitializationException:由造成您无法创建[com.practice.MyActor]明确使用构造(新)的一个实例。 你必须使用的工厂方法来创建一个新的演员。 无论哪种用途: 'VAL演员= context.actorOf(道具[MyActor])'
(从一个演员内创建受监管儿童演员),或“VAL演员= system.actorOf(道具(新MyActor(..)))”(以创建从ActorSystem顶层演员)

Answer 1:

那是因为你正在创建的实例MyActorActorSystem 。 创建演员的工厂内(这就是它是;-)),它应该是罚款。

ActorSystem system = ActorSystem.create("mynamespace");
ActorRef actor = system.actorOf(new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyActor();
  }
}));

在这种情况下,你甚至不需要一个工厂,因为你有一个默认的构造函数。 你只需要把这个类作为参数传递给Props

system.actorOf(new Props(MyActor.class));


文章来源: Unable to create an actor using UnTypedActorFactory of akka java api
标签: scala actor akka