0

私は次のbuild.sbtを持っており、sbtを管理するIntelliJでScala 2.10.4を実行しており、sbtビルドファイルに基づいてプロジェクトを更新しています。scalaz-streams を追加するまでは、すべて正常に動作していましscalaz.concurrent.Taskた。次のエラーのいずれかに遭遇せずに使用することはできないようです。


// build.sbt

name := "ScalazStreamsAkka"

version := "1.0"


resolvers += "Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases"

resolvers ++= Seq(
  Resolver.sonatypeRepo("releases"),
  Resolver.sonatypeRepo("snapshots")
)

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"

libraryDependencies += "org.scalaz" %% "scalaz-concurrent" % "7.1.0"

//libraryDependencies += "org.scalaz.stream" %% "scalaz-stream" % "0.5a"

libraryDependencies += "org.typelevel" %% "scodec-core" % "1.3.0"

libraryDependencies ++= Seq(
  "com.chuusai" % "shapeless_2.10.4" % "2.0.0"
)

この build.sbt では、次のエラーが発生します。

scala> import scalaz.concurrent.Task
import scalaz.concurrent.Task

scala> Task
java.lang.IncompatibleClassChangeError: Class scalaz.concurrent.Task$$anon$1 does not        implement the requested interface scalaz.InvariantFunctor

「scalaz-concurrent」のコメントを外すと、同じエラーが発生します:

scala> import scalaz.concurrent.Task
import scalaz.concurrent.Task

scala> Task
java.lang.IncompatibleClassChangeError: Class scalaz.concurrent.Task$$anon$1 does not     implement the requested interface scalaz.InvariantFunctor`

これらの最新の例を実行しようとすると...

val ones: Process[Task,Int] = Process.constant(1)

/* A stream which emits `0, 1, 2 ... 99`. */
val zeroTo100: Process[Task,Int] = Process.range(0,100)

また、同様のエラーが発生します。


また、次のエラーが発生しました。

scala>     val expensiveInt: Task[Int] = Task { 41 + 1 }
java.lang.NoClassDefFoundError: Could not initialize class scalaz.concurrent.Task$

これらの奇妙なエラーに遭遇せずに scalaz ストリームを使用する方法を知っている人はいますか? 私は akka アクターと先物、そしておそらく shapeless と scodec で scalaz-streams を使用しようとしています。

4

1 に答える 1

0

私はそれを自分で修正しました。解決策は、新しい intellij プロジェクトを作成し、shapeless + scodec を削除し、intellij の maven コンポーネントの代わりに (libraryDependency += を追加することにより) SBT によって akka 依存関係を解決することでした。

于 2014-09-09T01:41:51.967 に答える