【发布时间】:2014-04-29 19:41:05
【问题描述】:
我正在尝试使用 JRuby 使用最新的 Akka 版本(现在是 2.3.2)创建一个演员。问题是,我不断收到错误消息:
Java::JavaLang::IllegalArgumentException: erased Creator types are unsupported, use Props.create(actorClass, creator) instead
基本上,我在 Akka Documentation 上关注这里的代码
我无法创建akka.japi.Creator,因为这需要通用信息,并且这些信息会在运行时被删除(而 JRuby 基本上是无处不在的运行时)。我已经尝试过的:
class GreetingActor < UntypedActor
def onReceive(message)
if (message.is_a? Greeting)
puts("Hello " + message.who)
end
end
end
system = ActorSystem.create("MySystem")
greeter = system.actorOf(Props.create(GreetingActor))
最后一行以erased Creator types are unsupported 失败。我试图将它包装在akka.japi.Creator 下,但出现了同样的错误(因为 Creator 需要泛型信息,而 JRuby 不提供它)。我试过使用“become_java!”在 GreetingActor 上,但它返回 nil(如果 Ruby 类从 Java 类扩展,JRuby 不能从 Ruby 类创建新的 Java 类)。
有没有办法声明创建者传递泛型信息?
【问题讨论】: