我一直在關注QuickStart guide for Akka Streams,我遇到了一個錯誤。我的代碼很簡單:Akka無法啓動演員系統
object Main extends App {
implicit val system = ActorSystem("QuickStart")
implicit val materializer = ActorMaterializer()
val source: Source[Int, NotUsed] = Source(1 to 100)
source.runForeach(i => println(i)) (materializer)
}
然而這將導致一個錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Product$class at akka.util.Timeout.(Timeout.scala:13) at akka.actor.ActorSystem$Settings.(ActorSystem.scala:179) at akka.actor.ActorSystemImpl.(ActorSystem.scala:530) at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) at akka.actor.ActorSystem$.apply(ActorSystem.scala:109) at streams_test.Main$.delayedEndpoint$streams_test$Main$1(Main.scala:14) at streams_test.Main$delayedInit$body.apply(Main.scala:13) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.immutable.List.foreach(List.scala:378) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at streams_test.Main$.main(Main.scala:13) at streams_test.Main.main(Main.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: java.lang.ClassNotFoundException: scala.Product$class at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 19 more
我也嘗試過,沒有運氣的SBT控制檯運行它。有誰知道是什麼原因造成這個問題?這是在該行被扔:
implicit val system = ActorSystem("QuickStart")
按照要求,我build.sbt
文件:
name := "Akka_test"
version := "1.0"
scalaVersion := "2.12.0"
// https://mvnrepository.com/artifact/com.typesafe.akka/akka-actor_2.11
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.3.9"
// https://mvnrepository.com/artifact/com.typesafe.akka/akka-stream_2.11
libraryDependencies += "com.typesafe.akka" % "akka-stream_2.11" % "2.4.12"
// https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core
libraryDependencies += "org.twitter4j" % "twitter4j-core" % "4.0.2"
這可能是Scala版本問題,你可能使用2.10編譯庫與2.11編譯器或反之亦然 – pamu
你可以請粘貼你的'build.sb t'文件呢? – pamu
有時它會在'java'而不是'scala'運行編譯類時發生。您可以在打包的jar上使用'java',但默認情況下'java'不會在類路徑上放置scala庫。 –