[英]Mysterious Scalaz NoClassDefFoundError and scalaz.InvariantFunctor errors
我有以下build.sbt,並且正在運行IntelliJ管理sbt並基於sbt構建文件刷新項目的Scala 2.10.4。 一切正常,直到我添加了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流而不會遇到這些奇怪的錯誤? 我正在嘗試將scalaz流與akka演員和期貨一起使用,以及可能不定型和scodec。
我自己修好了。 解決方案是創建一個新的intellij項目,刪除無形的+ scodec,並通過SBT(通過添加libraryDependency + =)代替atellij的maven組件來使akka依賴關系得以解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.