问题是我无法直接创建Actor类:
scala代码
MyActor extends EventsourcedProcessor with ActorLogging {
// ...
}
Java代码
第一版
class TestClass {
public static void main (String[] args) {
MyActor actor = new MyActor() //Exception here
//akka.actor.ActorInitializationException: You cannot create an instance of [MyActor] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.
}
}
第二版
class TestClass {
public static void main (String[] args) {
final ActorRef actor = ActorSystem.create("helloakka").actorOf(Props.create(MyActor.class), "actor");
//What method to use there:
//actor.get - ?
}
}
重要
我需要actor类来诊断/试验其他类的编译时错误源。我无法在IDE中看到所有错误,因为它们不是突出显示,但是当maven编译它失败时。所以我做了一些实验,看看这些错误出现在哪里,哪些不出现。
答案 0 :(得分:1)
如果您需要访问基础角色,则需要使用TestActorRef
中的akka-testkit
。
import akka.testkit.TestActorRef
val actorRef = TestActorRef[MyActor]
val actor = actorRef.underlyingActor
http://doc.akka.io/docs/akka/2.3.5/scala/testing.html#Obtaining_a_Reference_to_an_Actor
这应仅在您的测试中使用,并且直接在生产代码中访问actor是非常危险的,不应该这样做。