Настройка ActorSystem Akka (Scala) - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь создать актер Фибоначчи, который будет вычислять Фибоначчи (n) путем создания других акторов (для учебных целей). До сих пор я пытаюсь настроить простой актер и ActorSystem как таковые:


import FibActor1.fib
import akka.actor._
import akka.event.Logging


  class FibActor1 extends Actor {
    val res = 0
    val log = Logging(context.system, this)

    def receive = {
      case fib(n)
      => fib(n) match {
        case fib(0) =>
          sender ! res
        case fib(1) =>
          sender ! res + 1
//        case fib(x) => TODO
      }
        context.stop(self)
    }
  }

object FibActor1 { // companion object
  case class fib(n: Int)
  case class result(n: Int, actorRef: ActorRef)

}

object ActorMain extends App {
    lazy val oursystem = ActorSystem("ExampleSystem")
    val fibActor = oursystem.actorOf(Props[FibActor1], "fibActor")
    fibActor ! fib(0) // Testing the base case
} 

Однако, когда я запускаю ActorMain, я получаю эту ошибку, и мне трудно понять, почему (извиняюсь за длинное сообщение об ошибке):

/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=50796:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/lib/tools.jar:/Users/Kareem/CMPT340/ScalaWork/out/production/Assignment4:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/akka/akka-actor-typed_2.13/2.6.1/akka-actor-typed_2.13-2.6.1.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.13/2.6.1/akka-actor_2.13-2.6.1.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/akka/akka-slf4j_2.13/2.6.1/akka-slf4j_2.13-2.6.1.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/typesafe/config/1.4.0/config-1.4.0.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-java8-compat_2.13/0.9.0/scala-java8-compat_2.13-0.9.0.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.jar:/Users/Kareem/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.29/slf4j-api-1.7.29.jar:/Users/Kareem/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.10.jar:/Users/Kareem/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.10.jar ActorMain
22:33:01.840 [ExampleSystem-akka.actor.default-dispatcher-5] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
Uncaught error from thread [ExampleSystem-akka.actor.default-dispatcher-5]: scala.concurrent.BatchingExecutor.execute$(Lscala/concurrent/BatchingExecutor;Ljava/lang/Runnable;)V, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[ExampleSystem]
java.lang.NoSuchMethodError: scala.concurrent.BatchingExecutor.execute$(Lscala/concurrent/BatchingExecutor;Ljava/lang/Runnable;)V
    at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:873)
    at scala.concurrent.impl.Promise$Transformation.submitWithValue(Promise.scala:392)
    at scala.concurrent.impl.Promise$DefaultPromise.submitWithValue(Promise.scala:302)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete0(Promise.scala:249)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:242)
    at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:585)
    at akka.event.slf4j.Slf4jLogger$$anonfun$receive$1.applyOrElse(Slf4jLogger.scala:105)
    at akka.actor.Actor.aroundReceive(Actor.scala:533)
    at akka.actor.Actor.aroundReceive$(Actor.scala:531)
    at akka.event.slf4j.Slf4jLogger.aroundReceive(Slf4jLogger.scala:55)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
    at akka.actor.ActorCell.invoke(ActorCell.scala:543)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
    at akka.dispatch.Mailbox.run(Mailbox.scala:230)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:242)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
[ERROR] [SECURITY][03/22/2020 22:33:01.867] [ExampleSystem-akka.actor.default-dispatcher-5] [akka.actor.ActorSystemImpl(ExampleSystem)] Uncaught error from thread [ExampleSystem-akka.actor.default-dispatcher-5]: scala.concurrent.BatchingExecutor.execute$(Lscala/concurrent/BatchingExecutor;Ljava/lang/Runnable;)V, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[ExampleSystem]
java.lang.NoSuchMethodError: scala.concurrent.BatchingExecutor.execute$(Lscala/concurrent/BatchingExecutor;Ljava/lang/Runnable;)V
    at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:873)
    at scala.concurrent.impl.Promise$Transformation.submitWithValue(Promise.scala:392)
    at scala.concurrent.impl.Promise$DefaultPromise.submitWithValue(Promise.scala:302)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete0(Promise.scala:249)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:242)
    at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:585)
    at akka.event.slf4j.Slf4jLogger$$anonfun$receive$1.applyOrElse(Slf4jLogger.scala:105)
    at akka.actor.Actor.aroundReceive(Actor.scala:533)
    at akka.actor.Actor.aroundReceive$(Actor.scala:531)
    at akka.event.slf4j.Slf4jLogger.aroundReceive(Slf4jLogger.scala:55)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
    at akka.actor.ActorCell.invoke(ActorCell.scala:543)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
    at akka.dispatch.Mailbox.run(Mailbox.scala:230)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:242)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


Process finished with exit code 255

У меня такое ощущение, что это может быть небольшая вопрос, но я не знаю достаточно об актерах akka, чтобы понять, что я делаю неправильно, буду признателен за любую помощь

...