Akka.actor.dispatcher NoSuchMethod异常

时间:2016-06-03 17:13:18

标签: scala akka sbt-assembly

我正在尝试了解Akka演员,我正在运行以下示例。我的问题是,当我运行Idea IDE时,它运行得非常好。但是当我使用sbt程序集创建的jar运行它时会抛出NoSuchMethodException java.lang.NoSuchMethodError: akka.actor.ActorSystem.dispatcher()Lscala/concurrent/ExecutionContextExecutor异常,我无法调试,因为它在IDE中工作正常。

object Runner {
 def main(args: Array[String]) {
       run()
}

def run() = {
val system = ActorSystem("my-system")
import system.dispatcher
val props = Props[Manager]
val pool = mutable.ArrayBuffer.empty[(Int, ActorRef)]
for (i <- 1 to 10) {
  pool += ((i, system.actorOf(props)))
}

val futures = pool.map {
  case (x: Int, y: ActorRef) =>
    val future = ask(y, Echo(x))(Timeout(100 seconds)).mapTo[Int]
    println(future.toString)
    future

}
/*Next line causes Exception*/
val futureList = Future.sequence(futures)
val result = futureList.map(x => {
  x.sum
})

result onSuccess {
  case sum => println(sum)
}

pool.foreach(x => system.stop(x._2))
system.shutdown()

 }
}

我正在使用的sbt文件如下。

 lazy val commonSettings = Seq(
  organization := "foobar",
  version := "1.0",
   scalaVersion := "2.10.6",
   test in assembly := {}
 )

 lazy val root = (project).aggregate(redis).settings(commonSettings: _*).
  settings(
 name := "scala_code_root",
 version := "1.0",
 scalaVersion := "2.10.6"
 exportJars := false
  )

lazy val myakka =(project in file("myakka")).settings(commonSettings: _*).settings(   
  libraryDependencies += "com.typesafe.akka" % "akka-actor_2.10" % "2.3.15"
)

val futureList = Future.sequence(futures)抛出异常。显然这个方法很糟糕,因为IDEA和sbt-assembly都使用相同的sbt文件。什么可能是例外的原因?

0 个答案:

没有答案