我试图用无类型的演员工厂创建一个演员,编译很好 . 但是在运行应用程序时,我收到以下错误 . 我在配置中遗漏了什么吗?
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:您无法使用构造函数(new)显式创建[com.practice.MyActor]的实例 . 您必须使用其中一种工厂方法来创建新actor . 使用:'val actor = context.actorOf(Props [MyActor])'(从actor中创建受监督的子actor),或'val actor = system.actorOf(Props(new MyActor(..)))' (从ActorSystem创建顶级actor)
1 回答
那是因为你在
ActorSystem
之外创建了MyActor
的实例 . 在工厂内部创建Actor(这就是它的用途;-)),它应该没问题 .在这种情况下,您甚至不需要工厂,因为您有一个默认构造函数 . 只需将类作为参数传递给
Props
: