我正在尝试像往常一样使用 akka 与 actor 建立简单的远程连接,但我确定在使用来自 android 的 akka 时我还需要做一些其他事情,有人能帮忙吗?
import akka.actor.Actor.remote
// Establish Connection to Remote Actor
val server = remote.actorFor(remoteActorID, rIP, rPort)
我得到以下堆栈跟踪:
04-28 09:57:13.114: ERROR/AndroidRuntime(18536): FATAL EXCEPTION: Thread-741
java.lang.ExceptionInInitializerError
at akka.actor.Actor$.remote(Actor.scala:115)
at edu.spsu.rgoodwin.networking.api.RemoteConnection.<init>(RemoteConnection.scala:18)
at edu.spsu.rgoodwin.csrAndroidApp.ClientConfigActivity.routerRegistration(ClientConfigActivity.scala:234)
at edu.spsu.rgoodwin.csrAndroidApp.ClientConfigActivity$$anon$1.run(ClientConfigActivity.scala:71)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.ExceptionInInitializerError
at akka.util.ReflectiveAccess$Remote$.<init>(ReflectiveAccess.scala:52)
at akka.util.ReflectiveAccess$Remote$.<clinit>(ReflectiveAccess.scala)
... 5 more
Caused by: akka.config.ConfigurationException: Event Handler specified in config can't be loaded [akka.event.EventHandler$DefaultListener] due to [java.lang.ClassNotFoundException: akka.event.EventHandler$DefaultListener]
[localhost_0e3e4c40-913a-11e1-b984-660379e93466]
at akka.event.EventHandler$$anonfun$1.apply(EventHandler.scala:231)
at akka.event.EventHandler$$anonfun$1.apply(EventHandler.scala:223)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at akka.event.EventHandler$.<init>(EventHandler.scala:223)
at akka.event.EventHandler$.<clinit>(EventHandler.scala)
... 7 more
Caused by: java.lang.ClassNotFoundException: akka.event.EventHandler$DefaultListener
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:217)
at java.lang.Class.forName(Class.java:172)
at akka.util.ReflectiveAccess$.getClassFor(ReflectiveAccess.scala:222)
at akka.event.EventHandler$$anonfun$1.apply(EventHandler.scala:225)
... 12 more
Caused by: java.lang.NoClassDefFoundError: akka/event/EventHandler$DefaultListener
... 17 more
Caused by: java.lang.ClassNotFoundException: akka.event.EventHandler$DefaultListener
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
最佳答案
我在 Akka 2.0.2 和 Android 2.3.3 上使用它。你需要做的是:
解决方法是 Akka jar 在混淆器不喜欢的同一路径中包含多个 reference.conf。通过从 jars 中删除 reference.conf 而不是包括自定义 reference.conf 来执行此操作,该自定义 reference.conf 包括来自 jars 中两个文件的配置。
配置 Proguard 以包含来自 akka 的被反射引用的类,并忽略有关 sun.misc.Unsafe 的警告。我的配置:https://gist.github.com/3307987
将 Netty 升级到 3.3.1(修复了 sun.misc.Unsafe 的使用问题)
关于android - android 上的远程 akka Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10364282/