我们正在使用Akka 2.0 RC1并在使用消息:akka.actor.LocalActorRefProvider
和堆栈跟踪创建ActorSystem时获得异常,如下所示:
java.net.URLClassLoader$1.run(URLClassLoader.java:366)
java.net.URLClassLoader$1.run(URLClassLoader.java:355)
java.security.AccessController.doPrivileged(AccessController.java:279)
java.security.AccessController.doPrivileged(AccessController.java:520)
java.net.URLClassLoader.findClass(URLClassLoader.java:354)
java.lang.ClassLoader.loadClass(ClassLoader.java:450)
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
java.lang.ClassLoader.loadClass(ClassLoader.java:385)
akka.actor.ReflectiveDynamicAccess.getClassFor(DynamicAccess.scala:94)
akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:102)
akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:439)
akka.actor.ActorSystem$.apply(ActorSystem.scala:41)
akka.actor.ActorSystem$.apply(ActorSystem.scala:51)
kozo.excel.impl.ConnectClient.<init>(ConnectClient.scala:26)
此行发生异常:
system = ActorSystem("FunctionClient")
任何想法或想法?我们确实确认LocalActorRefProvider在classpath中。
答案 0 :(得分:4)
如果您确实在您的问题中添加了实际的异常消息,那会有所帮助,但我会在这里继续讨论这个错误消息illustrated in this thread:
java.lang.ClassCastException: interface akka.actor.ActorRefProvider is
not assignable from class akka.actor.LocalActorRefProvider
当我通过你描述的方式在控制台下运行它时,它也适合我。但是,如果我使用:
运行它
scala -classpath
并导入和执行,我确实得到了我提到的错误。
原因:
Akka使用创建
ActorSystem
的线程中的上下文类加载器,并且因为每一行都在它自己的加载器上,所以如果你不使用它,你就会遇到问题。
建议:
repl中的每一行都在一个单独的线程中运行 如果添加
-Yrepl-sync
选项,它应该可以正常工作