2016-11-02 9 views
1

私はQuickStart guide for Akka Streamsをフォローしてきましたが、エラーが発生しました。私のコードは単純です:アクテルはActorSystemを起動できません

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コンソールを介してそれを実行してみました。誰もがこの問題の原因を知っていますか?ラインでthrowedされている:要求された、私のbuild.sbtファイルとして

implicit val system = ActorSystem("QuickStart") 

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" 
+3

これは、2.11コンパイラで2.10のコンパイルされたライブラリを使用している可能性がありますScalaのバージョンの問題かもしれません。その逆の場合は – pamu

+2

ur build.sb t'ファイルも同様ですか? – pamu

+0

'scala'の代わりに' java'を使ってコンパイルされたクラスを実行すると、時々起こります。パッケージ化されたjarで 'java'を使うことはできますが、' java'はデフォルトでクラスパスにスカラーライブラリを置くことはありません。 –

答えて

6

これは、あなたが2.11コンパイラまたはその逆で2.10コンパイルされたライブラリを使用している可能性がありScalaのバージョンの問題である可能性があり。

明示的build.sbtでScalaのバージョンを持っていると

代わりに使用

libraryDependencies += "group_id" % "artificat_id_scala_version" % "version" 
のこの

scalaVersion := "scala_version" 

libraryDependencies += "group_id" %% "artificat_id" % "version" 

build.sbtでのgroupId後%%を使用する場合には問題に実行して回避することができます