簡體   English   中英

神秘的Scalaz NoClassDefFoundError和scalaz.InvariantFunctor錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM