2

型指定されていないアクター ファクトリを使用してアクターを作成しようとしていますが、コンパイルは正常に行われます。しかし、アプリケーションの実行中に次のエラーが発生します。構成に欠けているものはありますか?

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 actor = context.actorOf(Props[MyActor])'
(アクター内から監視対象の子アクターを作成する場合) または 'val actor = system.actorOf(Props(new MyActor(..)))' のいずれかを使用します。 (ActorSystem から最上位のアクターを作成するため)

4

1 に答える 1

3

MyActorこれは、 の外側でのインスタンスを作成しているためですActorSystem。ファクトリ内にアクターを作成します (それが目的です ;-) )。これで問題ありません。

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));
于 2012-05-24T11:01:45.710 に答える